Instruction¶
- Please make sure that ALL required submission files are submitted on the E-Learning.
- Please make sure to use Markdown as comment for the code you are writing
- Do not ZIP the submission files
Caution¶
- We DOES NOT ACCEPT a submission via Gmail, Google Drive, Whatsapp, or any other than E-Learning
- We DOES NOT tolerate any plagriarism, etc.
- DO NOT change the order of this template.
The dataset that are being used for the project¶
- Jumlah Perjalanan Wisatawan Nusantara Menurut Provinsi Tujuan (Perjalanan), 2019 – sumber : [https://www.bps.go.id/id/statistics-table/2/MjIwMSMy/jumlah-perjalanan-wisatawan-nusantara-menurut-provinsi-tujuan--perjalanan-.html]
- Jumlah Perjalanan Wisatawan Nusantara Menurut Provinsi Tujuan (Perjalanan), 2020 – sumber : [https://www.bps.go.id/id/statistics-table/2/MjIwMSMy/jumlah-perjalanan-wisatawan-nusantara-menurut-provinsi-tujuan--perjalanan-.html]
- Jumlah Perjalanan Wisatawan Nusantara Menurut Provinsi Tujuan (Perjalanan), 2021 – sumber : [https://www.bps.go.id/id/statistics-table/2/MjIwMSMy/jumlah-perjalanan-wisatawan-nusantara-menurut-provinsi-tujuan--perjalanan-.html]
- Jumlah Perjalanan Wisatawan Nusantara Menurut Provinsi Tujuan (Perjalanan), 2022 – sumber : [https://www.bps.go.id/id/statistics-table/2/MjIwMSMy/jumlah-perjalanan-wisatawan-nusantara-menurut-provinsi-tujuan--perjalanan-.html]
- Jumlah Perjalanan Wisatawan Nusantara Menurut Provinsi Tujuan (Perjalanan), 2023 – sumber : [https://www.bps.go.id/id/statistics-table/2/MjIwMSMy/jumlah-perjalanan-wisatawan-nusantara-menurut-provinsi-tujuan--perjalanan-.html]
- Jumlah Perjalanan Wisatawan Nusantara Menurut Provinsi Tujuan (Perjalanan), 2024 – sumber : [https://www.bps.go.id/id/statistics-table/2/MjIwMSMy/jumlah-perjalanan-wisatawan-nusantara-menurut-provinsi-tujuan--perjalanan-.html]
Dataset Description:¶
Please describe the dataset with much detail if possible¶
This dataset is titled “Jumlah Perjalanan Wisatawan Nusantara Menurut Provinsi Tujuan” and originates from the Badan Pusat Statistik (BPS). It includes information on the number of domestic tourist trips from each province in Indonesia from 2019 to 2024. The dataset consists of 38 entities, representing 38 provinces in Indonesia. The features in this dataset are the province names and the number of domestic tourist trips recorded each month. After preprocessing, this dataset is comprised of 34 instances and 61 features. Each instance represents a province, and the features detail the number of domestic tourist trips recorded monthly.
In the “Jumlah Perjalanan Wisatawan Nusantara Menurut Provinsi Tujuan” dataset, the data only includes the number of domestic tourists in each province per month and per year. There are no labels indicating specific categories or segmentations of provinces, making this dataset unsupervised. This data provides insight into the movement of domestic tourists in Indonesia and can be used to analyze tourism trends, identify popular destinations, and formulate tourism development strategies.
Project Showcase¶
Import libraries¶
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
Data preprocessing¶
Dataset 2019¶
# Import 2019 dataset
data_2019 = pd.read_csv("Jumlah Perjalanan Wisatawan Nusantara Menurut Provinsi Tujuan, 2019.csv", header=None)
print("Total instance and features:", data_2019.shape)
print("List of features:", data_2019.columns)
print("Print the first 5 instance:\n", data_2019.head())
Total instance and features: (43, 14)
List of features: Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], dtype='int64')
Print the first 5 instance:
0 1 2 \
0 38 Provinsi NaN NaN
1 NaN Jumlah Perjalanan Wisatawan Nusantara Menurut ... NaN
2 NaN 2019 NaN
3 NaN Januari Februari
4 ACEH 1387574 1111607
3 4 5 6 7 8 9 10 \
0 NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN
3 Maret April Mei Juni Juli Agustus September Oktober
4 1113176 1155705 1070909 1800152 1323272 1508073 1174513 1219323
11 12 13
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN
3 November Desember Tahunan
4 1198958 1597524 15660786
Dataset 2020¶
# Import 2020 dataset
data_2020 = pd.read_csv("Jumlah Perjalanan Wisatawan Nusantara Menurut Provinsi Tujuan, 2020.csv", header=None)
print("Total instance and features:", data_2020.shape)
print("List of features:", data_2020.columns)
print("Print the first 5 instance:\n", data_2020.head())
Total instance and features: (43, 14)
List of features: Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], dtype='int64')
Print the first 5 instance:
0 1 2 \
0 38 Provinsi NaN NaN
1 NaN Jumlah Perjalanan Wisatawan Nusantara Menurut ... NaN
2 NaN 2020 NaN
3 NaN Januari Februari
4 ACEH 483897 430589
3 4 5 6 7 8 9 10 \
0 NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN
3 Maret April Mei Juni Juli Agustus September Oktober
4 351710 157764 258310 298482 333571 392055 293602 340415
11 12 13
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN
3 November Desember Tahunan
4 322558 479226 4142179
Dataset 2021¶
# Import 2021 dataset
data_2021 = pd.read_csv("Jumlah Perjalanan Wisatawan Nusantara Menurut Provinsi Tujuan, 2021.csv", header=None)
print("Total instance and features:", data_2021.shape)
print("List of features:", data_2021.columns)
print("Print the first 5 instance:\n", data_2021.head())
Total instance and features: (43, 14)
List of features: Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], dtype='int64')
Print the first 5 instance:
0 1 2 \
0 38 Provinsi NaN NaN
1 NaN Jumlah Perjalanan Wisatawan Nusantara Menurut ... NaN
2 NaN 2021 NaN
3 NaN Januari Februari
4 ACEH 396953 421243
3 4 5 6 7 8 9 10 \
0 NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN
3 Maret April Mei Juni Juli Agustus September Oktober
4 445804 378402 599117 457822 445355 397120 440652 490983
11 12 13
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN
3 November Desember Tahunan
4 445046 615908 5534405
Dataset 2022¶
# Import 2022 dataset
data_2022 = pd.read_csv("Jumlah Perjalanan Wisatawan Nusantara Menurut Provinsi Tujuan, 2022.csv", header=None)
print("Total instance and features:", data_2022.shape)
print("List of features:", data_2022.columns)
print("Print the first 5 instance:\n", data_2022.head())
Total instance and features: (43, 14)
List of features: Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], dtype='int64')
Print the first 5 instance:
0 1 2 \
0 38 Provinsi NaN NaN
1 NaN Jumlah Perjalanan Wisatawan Nusantara Menurut ... NaN
2 NaN 2022 NaN
3 NaN Januari Februari
4 ACEH 526417 501651
3 4 5 6 7 8 9 10 \
0 NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN
3 Maret April Mei Juni Juli Agustus September Oktober
4 585675 434633 935025 566361 748573 531072 500673 513056
11 12 13
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN
3 November Desember Tahunan
4 471520 639922 6954578
Dataset 2023¶
# Import 2023 dataset
data_2023 = pd.read_csv("Jumlah Perjalanan Wisatawan Nusantara Menurut Provinsi Tujuan, 2023.csv", header=None)
print("Total instance and features:", data_2023.shape)
print("List of features:", data_2023.columns)
print("Print the first 5 instance:\n", data_2023.head())
Total instance and features: (43, 14)
List of features: Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], dtype='int64')
Print the first 5 instance:
0 1 2 \
0 38 Provinsi NaN NaN
1 NaN Jumlah Perjalanan Wisatawan Nusantara Menurut ... NaN
2 NaN 2023 NaN
3 NaN Januari Februari
4 ACEH 663437 517850
3 4 5 6 7 8 9 10 \
0 NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN
3 Maret April Mei Juni Juli Agustus September Oktober
4 557272 756915 791968 701963 871519 618671 565184 588020
11 12 13
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN
3 November Desember Tahunan
4 637519 1673468 8943786
Dataset 2024¶
# Import 2024 dataset
data_2024 = pd.read_csv("Jumlah Perjalanan Wisatawan Nusantara Menurut Provinsi Tujuan, 2024.csv", header=None)
print("Total instance and features:", data_2024.shape)
print("List of features:", data_2024.columns)
print("Print the first 5 instance:\n", data_2024.head())
Total instance and features: (43, 14)
List of features: Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], dtype='int64')
Print the first 5 instance:
0 1 2 \
0 38 Provinsi NaN NaN
1 NaN Jumlah Perjalanan Wisatawan Nusantara Menurut ... NaN
2 NaN 2024 NaN
3 NaN Januari Februari
4 ACEH 1009785 937728
3 4 5 6 7 8 9 10 \
0 NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN
3 Maret April Mei Juni Juli Agustus September Oktober
4 905565 1282532 995794 1065780 958675 918712 1121450 -
11 12 13
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN
3 November Desember Tahunan
4 - - -
Merging the 2019-2024 dataset¶
Drop unnecessary features¶
# Drop 'Tahunan' features for 2019 dataset
data_2019 = data_2019.drop(columns=[13])
# Drop 'Provinsi' and 'Tahunan' features for 2020-2024 dataset
data_2020 = data_2020.drop(columns=[0, 13])
data_2021 = data_2021.drop(columns=[0, 13])
data_2022 = data_2022.drop(columns=[0, 13])
data_2023 = data_2023.drop(columns=[0, 13])
data_2024 = data_2024.drop(columns=[0, 7, 8, 9, 10, 11, 12, 13])
# Print total of features after drop
print("Total features after drop (2019):", data_2019.shape[1])
print("Total features after drop (2020):", data_2020.shape[1])
print("Total features after drop (2021):", data_2021.shape[1])
print("Total features after drop (2022):", data_2022.shape[1])
print("Total features after drop (2023):", data_2023.shape[1])
print("Total features after drop (2024):", data_2024.shape[1])
Total features after drop (2019): 13 Total features after drop (2020): 12 Total features after drop (2021): 12 Total features after drop (2022): 12 Total features after drop (2023): 12 Total features after drop (2024): 6
Combine/concat the datasets (2019-2024) and transpose the dataset¶
# Combine the datasets using concat along features (axis=1)
data = pd.concat([data_2019, data_2020, data_2021, data_2022, data_2023, data_2024], axis=1)
# Drop instance 0, 1, and 2 which contain the titles and descriptions of the dataset
data = data.drop([0, 1, 2])
# Reset index
data.reset_index(drop=True, inplace=True)
# Transpose the dataset
data = data.T
data
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | NaN | ACEH | SUMATERA UTARA | SUMATERA BARAT | RIAU | JAMBI | SUMATERA SELATAN | BENGKULU | LAMPUNG | KEP. BANGKA BELITUNG | ... | SULAWESI BARAT | MALUKU | MALUKU UTARA | PAPUA BARAT | PAPUA BARAT DAYA | PAPUA | PAPUA SELATAN | PAPUA TENGAH | PAPUA PEGUNUNGAN | INDONESIA |
| 1 | Januari | 1387574 | 5094564 | 1667509 | 1990985 | 828879 | 1763349 | 414287 | 2082997 | 298322 | ... | 197588 | 258094 | 125514 | 185287 | - | 313389 | - | - | - | 60784241 |
| 2 | Februari | 1111607 | 3282713 | 1313185 | 1425092 | 652908 | 1294947 | 304721 | 1612674 | 240226 | ... | 134391 | 193290 | 76500 | 143094 | - | 209857 | - | - | - | 44588823 |
| 3 | Maret | 1113176 | 3442407 | 1420799 | 1541155 | 716028 | 1356470 | 336570 | 1606207 | 255054 | ... | 163587 | 206894 | 166014 | 159903 | - | 224960 | - | - | - | 56669168 |
| 4 | April | 1155705 | 3676763 | 1573606 | 1563303 | 547378 | 1099872 | 287546 | 1164672 | 199678 | ... | 174495 | 216036 | 190003 | 152087 | - | 209282 | - | - | - | 57856792 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2 | Februari | 937728 | 3392029 | 1758610 | 1449021 | 610850 | 1319045 | 308036 | 1338941 | 237943 | ... | 354721 | 156854 | 174338 | 38474 | 75511 | 102856 | 17468 | 39547 | 35410 | 81107173 |
| 3 | Maret | 905565 | 3149185 | 1281044 | 1434953 | 612554 | 1285518 | 298351 | 1260766 | 224732 | ... | 325813 | 161337 | 163305 | 35649 | 73040 | 103119 | 15993 | 37022 | 28300 | 78956390 |
| 4 | April | 1282532 | 3548654 | 1660760 | 1750903 | 886241 | 1854471 | 477429 | 1702675 | 297882 | ... | 443291 | 190504 | 206819 | 36469 | 76064 | 107380 | 17842 | 32192 | 23991 | 104527211 |
| 5 | Mei | 995794 | 3419857 | 1302524 | 1488391 | 662793 | 1326810 | 339591 | 1508526 | 237959 | ... | 342758 | 141499 | 161274 | 30025 | 68339 | 90245 | 13477 | 28351 | 23709 | 82909661 |
| 6 | Juni | 1065780 | 3369808 | 1642366 | 1446350 | 665827 | 1361245 | 358206 | 1658113 | 235572 | ... | 344329 | 117608 | 143794 | 24109 | 60563 | 80858 | 10197 | 20750 | 20894 | 83472282 |
67 rows × 40 columns
Create new index and set feature names after concatenating datasets¶
# Create new feature names for the concatenated dataset
months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december']
years = ['2019', '2020', '2021', '2022', '2023']
months_2024 = ['january', 'february', 'march', 'april', 'may', 'june']
# Rename features to ['{month}_{year}' for each month and year]
index = [f'{month}_{year}' for year in years for month in months] + [f'{month}_2024' for month in months_2024]
# Drop the old index
data = data.drop(columns=[0])
# Take the first row as column headers
data.columns = data.iloc[0]
# Remove the first row
data = data[1:]
# Set new index
data.index = index
# Parse the index to datetime
data.index = pd.to_datetime(data.index, format='%B_%Y')
data
| ACEH | SUMATERA UTARA | SUMATERA BARAT | RIAU | JAMBI | SUMATERA SELATAN | BENGKULU | LAMPUNG | KEP. BANGKA BELITUNG | KEP. RIAU | ... | SULAWESI BARAT | MALUKU | MALUKU UTARA | PAPUA BARAT | PAPUA BARAT DAYA | PAPUA | PAPUA SELATAN | PAPUA TENGAH | PAPUA PEGUNUNGAN | INDONESIA | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2019-01-01 | 1387574 | 5094564 | 1667509 | 1990985 | 828879 | 1763349 | 414287 | 2082997 | 298322 | 434786 | ... | 197588 | 258094 | 125514 | 185287 | - | 313389 | - | - | - | 60784241 |
| 2019-02-01 | 1111607 | 3282713 | 1313185 | 1425092 | 652908 | 1294947 | 304721 | 1612674 | 240226 | 351865 | ... | 134391 | 193290 | 76500 | 143094 | - | 209857 | - | - | - | 44588823 |
| 2019-03-01 | 1113176 | 3442407 | 1420799 | 1541155 | 716028 | 1356470 | 336570 | 1606207 | 255054 | 358547 | ... | 163587 | 206894 | 166014 | 159903 | - | 224960 | - | - | - | 56669168 |
| 2019-04-01 | 1155705 | 3676763 | 1573606 | 1563303 | 547378 | 1099872 | 287546 | 1164672 | 199678 | 360392 | ... | 174495 | 216036 | 190003 | 152087 | - | 209282 | - | - | - | 57856792 |
| 2019-05-01 | 1070909 | 3469100 | 1511963 | 1574681 | 438508 | 917156 | 258241 | 877643 | 122301 | 358416 | ... | 152740 | 228658 | 163855 | 161711 | - | 235428 | - | - | - | 51548736 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2024-02-01 | 937728 | 3392029 | 1758610 | 1449021 | 610850 | 1319045 | 308036 | 1338941 | 237943 | 290290 | ... | 354721 | 156854 | 174338 | 38474 | 75511 | 102856 | 17468 | 39547 | 35410 | 81107173 |
| 2024-03-01 | 905565 | 3149185 | 1281044 | 1434953 | 612554 | 1285518 | 298351 | 1260766 | 224732 | 268990 | ... | 325813 | 161337 | 163305 | 35649 | 73040 | 103119 | 15993 | 37022 | 28300 | 78956390 |
| 2024-04-01 | 1282532 | 3548654 | 1660760 | 1750903 | 886241 | 1854471 | 477429 | 1702675 | 297882 | 333667 | ... | 443291 | 190504 | 206819 | 36469 | 76064 | 107380 | 17842 | 32192 | 23991 | 104527211 |
| 2024-05-01 | 995794 | 3419857 | 1302524 | 1488391 | 662793 | 1326810 | 339591 | 1508526 | 237959 | 276392 | ... | 342758 | 141499 | 161274 | 30025 | 68339 | 90245 | 13477 | 28351 | 23709 | 82909661 |
| 2024-06-01 | 1065780 | 3369808 | 1642366 | 1446350 | 665827 | 1361245 | 358206 | 1658113 | 235572 | 241548 | ... | 344329 | 117608 | 143794 | 24109 | 60563 | 80858 | 10197 | 20750 | 20894 | 83472282 |
66 rows × 39 columns
Handling missing values¶
# Replace missing values ('-') with NaN
data.replace('-', np.nan, inplace=True)
# Identify columns with missing values
missing_columns = data.columns[data.isnull().sum() > 0]
# Show the number of missing values per column
print("Column with missing values:")
print(data[missing_columns].isnull().sum())
# Drop columns with missing values
data = data.drop(columns=missing_columns)
data.columns
Column with missing values: 0 PAPUA BARAT DAYA 60 PAPUA SELATAN 60 PAPUA TENGAH 60 PAPUA PEGUNUNGAN 60 dtype: int64
Index(['ACEH', 'SUMATERA UTARA', 'SUMATERA BARAT', 'RIAU', 'JAMBI',
'SUMATERA SELATAN', 'BENGKULU', 'LAMPUNG', 'KEP. BANGKA BELITUNG',
'KEP. RIAU', 'DKI JAKARTA', 'JAWA BARAT', 'JAWA TENGAH',
'DI YOGYAKARTA', 'JAWA TIMUR', 'BANTEN', 'BALI', 'NUSA TENGGARA BARAT',
'NUSA TENGGARA TIMUR', 'KALIMANTAN BARAT', 'KALIMANTAN TENGAH',
'KALIMANTAN SELATAN', 'KALIMANTAN TIMUR', 'KALIMANTAN UTARA',
'SULAWESI UTARA', 'SULAWESI TENGAH', 'SULAWESI SELATAN',
'SULAWESI TENGGARA', 'GORONTALO', 'SULAWESI BARAT', 'MALUKU',
'MALUKU UTARA', 'PAPUA BARAT', 'PAPUA', 'INDONESIA'],
dtype='object', name=0)
Convert data to numeric¶
# Convert the dataset to numeric
data = data.apply(pd.to_numeric)
Drop unnecessary feature¶
# Drop unnecessary feature (INDONESIA)
data.drop(columns="INDONESIA", inplace=True)
# Display the final dataset features and instances
print("Total instance and features:", data.shape)
print("\nList of features:\n", data.columns)
print("\nList of instance (time_series):\n", data.index)
Total instance and features: (66, 34)
List of features:
Index(['ACEH', 'SUMATERA UTARA', 'SUMATERA BARAT', 'RIAU', 'JAMBI',
'SUMATERA SELATAN', 'BENGKULU', 'LAMPUNG', 'KEP. BANGKA BELITUNG',
'KEP. RIAU', 'DKI JAKARTA', 'JAWA BARAT', 'JAWA TENGAH',
'DI YOGYAKARTA', 'JAWA TIMUR', 'BANTEN', 'BALI', 'NUSA TENGGARA BARAT',
'NUSA TENGGARA TIMUR', 'KALIMANTAN BARAT', 'KALIMANTAN TENGAH',
'KALIMANTAN SELATAN', 'KALIMANTAN TIMUR', 'KALIMANTAN UTARA',
'SULAWESI UTARA', 'SULAWESI TENGAH', 'SULAWESI SELATAN',
'SULAWESI TENGGARA', 'GORONTALO', 'SULAWESI BARAT', 'MALUKU',
'MALUKU UTARA', 'PAPUA BARAT', 'PAPUA'],
dtype='object', name=0)
List of instance (time_series):
DatetimeIndex(['2019-01-01', '2019-02-01', '2019-03-01', '2019-04-01',
'2019-05-01', '2019-06-01', '2019-07-01', '2019-08-01',
'2019-09-01', '2019-10-01', '2019-11-01', '2019-12-01',
'2020-01-01', '2020-02-01', '2020-03-01', '2020-04-01',
'2020-05-01', '2020-06-01', '2020-07-01', '2020-08-01',
'2020-09-01', '2020-10-01', '2020-11-01', '2020-12-01',
'2021-01-01', '2021-02-01', '2021-03-01', '2021-04-01',
'2021-05-01', '2021-06-01', '2021-07-01', '2021-08-01',
'2021-09-01', '2021-10-01', '2021-11-01', '2021-12-01',
'2022-01-01', '2022-02-01', '2022-03-01', '2022-04-01',
'2022-05-01', '2022-06-01', '2022-07-01', '2022-08-01',
'2022-09-01', '2022-10-01', '2022-11-01', '2022-12-01',
'2023-01-01', '2023-02-01', '2023-03-01', '2023-04-01',
'2023-05-01', '2023-06-01', '2023-07-01', '2023-08-01',
'2023-09-01', '2023-10-01', '2023-11-01', '2023-12-01',
'2024-01-01', '2024-02-01', '2024-03-01', '2024-04-01',
'2024-05-01', '2024-06-01'],
dtype='datetime64[ns]', freq=None)
Create new dataset¶
# Reset index
data.reset_index(inplace=True)
# Rename the index column to 'time_series'
data.rename(columns={'index': 'time_series'}, inplace=True)
# Save the dataset to CSV
data.to_csv("cleaned_data.csv", index=False)
# Load the dataset
data = pd.read_csv("cleaned_data.csv")
# Set the 'time_series' column as the index
data.set_index('time_series', inplace=True)
data
| ACEH | SUMATERA UTARA | SUMATERA BARAT | RIAU | JAMBI | SUMATERA SELATAN | BENGKULU | LAMPUNG | KEP. BANGKA BELITUNG | KEP. RIAU | ... | SULAWESI UTARA | SULAWESI TENGAH | SULAWESI SELATAN | SULAWESI TENGGARA | GORONTALO | SULAWESI BARAT | MALUKU | MALUKU UTARA | PAPUA BARAT | PAPUA | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| time_series | |||||||||||||||||||||
| 2019-01-01 | 1387574 | 5094564 | 1667509 | 1990985 | 828879 | 1763349 | 414287 | 2082997 | 298322 | 434786 | ... | 256496 | 451254 | 2054894 | 534762 | 90789 | 197588 | 258094 | 125514 | 185287 | 313389 |
| 2019-02-01 | 1111607 | 3282713 | 1313185 | 1425092 | 652908 | 1294947 | 304721 | 1612674 | 240226 | 351865 | ... | 112937 | 308973 | 1402775 | 405350 | 48019 | 134391 | 193290 | 76500 | 143094 | 209857 |
| 2019-03-01 | 1113176 | 3442407 | 1420799 | 1541155 | 716028 | 1356470 | 336570 | 1606207 | 255054 | 358547 | ... | 197795 | 374463 | 1654575 | 436423 | 84467 | 163587 | 206894 | 166014 | 159903 | 224960 |
| 2019-04-01 | 1155705 | 3676763 | 1573606 | 1563303 | 547378 | 1099872 | 287546 | 1164672 | 199678 | 360392 | ... | 221246 | 374029 | 1799377 | 487941 | 102283 | 174495 | 216036 | 190003 | 152087 | 209282 |
| 2019-05-01 | 1070909 | 3469100 | 1511963 | 1574681 | 438508 | 917156 | 258241 | 877643 | 122301 | 358416 | ... | 235233 | 368161 | 1653101 | 445093 | 109827 | 152740 | 228658 | 163855 | 161711 | 235428 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2024-02-01 | 937728 | 3392029 | 1758610 | 1449021 | 610850 | 1319045 | 308036 | 1338941 | 237943 | 290290 | ... | 628713 | 831294 | 3016298 | 1145554 | 270873 | 354721 | 156854 | 174338 | 38474 | 102856 |
| 2024-03-01 | 905565 | 3149185 | 1281044 | 1434953 | 612554 | 1285518 | 298351 | 1260766 | 224732 | 268990 | ... | 625920 | 809385 | 2891023 | 1039727 | 274795 | 325813 | 161337 | 163305 | 35649 | 103119 |
| 2024-04-01 | 1282532 | 3548654 | 1660760 | 1750903 | 886241 | 1854471 | 477429 | 1702675 | 297882 | 333667 | ... | 762190 | 1061864 | 3551378 | 1442912 | 376567 | 443291 | 190504 | 206819 | 36469 | 107380 |
| 2024-05-01 | 995794 | 3419857 | 1302524 | 1488391 | 662793 | 1326810 | 339591 | 1508526 | 237959 | 276392 | ... | 668197 | 814471 | 3087984 | 1070042 | 285885 | 342758 | 141499 | 161274 | 30025 | 90245 |
| 2024-06-01 | 1065780 | 3369808 | 1642366 | 1446350 | 665827 | 1361245 | 358206 | 1658113 | 235572 | 241548 | ... | 671549 | 774521 | 3145350 | 1110037 | 287451 | 344329 | 117608 | 143794 | 24109 | 80858 |
66 rows × 34 columns
Split data to training and test¶
training_data = data.loc['2019-01-01':'2023-12-01']
training_data
| ACEH | SUMATERA UTARA | SUMATERA BARAT | RIAU | JAMBI | SUMATERA SELATAN | BENGKULU | LAMPUNG | KEP. BANGKA BELITUNG | KEP. RIAU | ... | SULAWESI UTARA | SULAWESI TENGAH | SULAWESI SELATAN | SULAWESI TENGGARA | GORONTALO | SULAWESI BARAT | MALUKU | MALUKU UTARA | PAPUA BARAT | PAPUA | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| time_series | |||||||||||||||||||||
| 2019-01-01 | 1387574 | 5094564 | 1667509 | 1990985 | 828879 | 1763349 | 414287 | 2082997 | 298322 | 434786 | ... | 256496 | 451254 | 2054894 | 534762 | 90789 | 197588 | 258094 | 125514 | 185287 | 313389 |
| 2019-02-01 | 1111607 | 3282713 | 1313185 | 1425092 | 652908 | 1294947 | 304721 | 1612674 | 240226 | 351865 | ... | 112937 | 308973 | 1402775 | 405350 | 48019 | 134391 | 193290 | 76500 | 143094 | 209857 |
| 2019-03-01 | 1113176 | 3442407 | 1420799 | 1541155 | 716028 | 1356470 | 336570 | 1606207 | 255054 | 358547 | ... | 197795 | 374463 | 1654575 | 436423 | 84467 | 163587 | 206894 | 166014 | 159903 | 224960 |
| 2019-04-01 | 1155705 | 3676763 | 1573606 | 1563303 | 547378 | 1099872 | 287546 | 1164672 | 199678 | 360392 | ... | 221246 | 374029 | 1799377 | 487941 | 102283 | 174495 | 216036 | 190003 | 152087 | 209282 |
| 2019-05-01 | 1070909 | 3469100 | 1511963 | 1574681 | 438508 | 917156 | 258241 | 877643 | 122301 | 358416 | ... | 235233 | 368161 | 1653101 | 445093 | 109827 | 152740 | 228658 | 163855 | 161711 | 235428 |
| 2019-06-01 | 1800152 | 5774370 | 2910574 | 2179811 | 572785 | 1380350 | 407898 | 1653991 | 178462 | 460205 | ... | 325311 | 380756 | 2395339 | 621228 | 163192 | 221961 | 224863 | 119683 | 172118 | 240501 |
| 2019-07-01 | 1323272 | 3996409 | 1719018 | 1646721 | 498688 | 848202 | 292552 | 992730 | 148190 | 413445 | ... | 336575 | 323650 | 1917506 | 487514 | 123297 | 173239 | 111095 | 102619 | 164784 | 234623 |
| 2019-08-01 | 1508073 | 3699782 | 1207708 | 1227426 | 620967 | 1265112 | 353997 | 1422192 | 182592 | 286867 | ... | 305167 | 506559 | 2516211 | 532628 | 131352 | 262037 | 104002 | 99582 | 158220 | 224909 |
| 2019-09-01 | 1174513 | 3208776 | 1011691 | 1018291 | 580974 | 1121514 | 347174 | 1191629 | 171412 | 244300 | ... | 267290 | 404438 | 2106120 | 439248 | 106151 | 204889 | 91767 | 85337 | 73498 | 174820 |
| 2019-10-01 | 1219323 | 3419415 | 1094813 | 1131194 | 533651 | 1276480 | 342352 | 1269517 | 195073 | 274522 | ... | 307207 | 469816 | 2341121 | 303878 | 139035 | 242300 | 96055 | 177456 | 93397 | 204906 |
| 2019-11-01 | 1198958 | 3416228 | 1078273 | 1119316 | 526013 | 1168308 | 340572 | 1276815 | 198154 | 287732 | ... | 286146 | 494853 | 2345045 | 300770 | 120291 | 236861 | 97869 | 163370 | 94620 | 212794 |
| 2019-12-01 | 1597524 | 5440703 | 2292513 | 2087900 | 702943 | 1575018 | 412683 | 1871463 | 239683 | 448736 | ... | 293133 | 418240 | 2230009 | 580664 | 127908 | 210792 | 243228 | 124114 | 180580 | 280181 |
| 2020-01-01 | 483897 | 2012511 | 863282 | 619363 | 264201 | 620543 | 155102 | 876254 | 127282 | 138085 | ... | 156614 | 185796 | 1027653 | 206468 | 48443 | 105991 | 38562 | 46810 | 46741 | 75045 |
| 2020-02-01 | 430589 | 1466193 | 779785 | 548129 | 250082 | 584230 | 140647 | 782363 | 107273 | 112726 | ... | 154197 | 176960 | 932636 | 193500 | 44850 | 97671 | 36768 | 47758 | 44158 | 73078 |
| 2020-03-01 | 351710 | 1109440 | 623248 | 464347 | 206088 | 483516 | 117920 | 658446 | 83654 | 68659 | ... | 158677 | 145200 | 759362 | 143516 | 54723 | 69873 | 29688 | 38527 | 34282 | 57571 |
| 2020-04-01 | 157764 | 442072 | 226466 | 215636 | 114969 | 234250 | 61421 | 356647 | 34757 | 19843 | ... | 66627 | 65380 | 287133 | 71545 | 33603 | 26873 | 10479 | 22439 | 9348 | 24783 |
| 2020-05-01 | 258310 | 576278 | 250931 | 249411 | 133020 | 223800 | 67769 | 395199 | 48428 | 17661 | ... | 58036 | 65852 | 308242 | 71224 | 27476 | 22014 | 7978 | 12649 | 11657 | 26829 |
| 2020-06-01 | 298482 | 864667 | 562966 | 390121 | 183620 | 339725 | 100775 | 559053 | 53351 | 29392 | ... | 112243 | 86803 | 547513 | 106867 | 49003 | 49222 | 11914 | 23881 | 17414 | 35260 |
| 2020-07-01 | 333571 | 1082687 | 754303 | 440119 | 235975 | 486690 | 131746 | 779034 | 70022 | 47791 | ... | 193492 | 119534 | 663996 | 146936 | 68769 | 61561 | 15625 | 36540 | 22301 | 45320 |
| 2020-08-01 | 392055 | 1291700 | 827245 | 497048 | 258405 | 555501 | 154764 | 880796 | 87978 | 46331 | ... | 259030 | 157123 | 909748 | 181890 | 83192 | 80440 | 21065 | 43536 | 23616 | 46725 |
| 2020-09-01 | 293602 | 1016798 | 555478 | 422867 | 228973 | 484199 | 127706 | 686462 | 73888 | 48314 | ... | 282281 | 132882 | 850322 | 206855 | 94892 | 75891 | 23965 | 47792 | 23906 | 50583 |
| 2020-10-01 | 340415 | 1232110 | 672099 | 520924 | 240877 | 557537 | 146378 | 788792 | 81326 | 60644 | ... | 335445 | 109312 | 959171 | 193265 | 108500 | 75517 | 29428 | 50275 | 26119 | 55847 |
| 2020-11-01 | 322558 | 1120288 | 661261 | 463144 | 242326 | 514748 | 131395 | 737712 | 86222 | 61440 | ... | 326566 | 137047 | 906014 | 191705 | 101882 | 75153 | 30269 | 48505 | 32062 | 58583 |
| 2020-12-01 | 479226 | 1831624 | 1115758 | 674613 | 326026 | 745355 | 184734 | 1024964 | 111916 | 94695 | ... | 377599 | 189733 | 1063264 | 269241 | 132725 | 110693 | 147307 | 83999 | 50886 | 136898 |
| 2021-01-01 | 396953 | 1424081 | 775782 | 507998 | 247256 | 541878 | 139180 | 707904 | 65347 | 60617 | ... | 252298 | 140380 | 743342 | 209867 | 90759 | 124447 | 78120 | 68567 | 56475 | 124573 |
| 2021-02-01 | 421243 | 1375473 | 735587 | 482533 | 225630 | 511557 | 131185 | 647312 | 72930 | 64867 | ... | 284672 | 139294 | 724546 | 189183 | 92165 | 77882 | 47482 | 47555 | 49044 | 56995 |
| 2021-03-01 | 445804 | 1415803 | 793796 | 511576 | 239867 | 553847 | 137722 | 746409 | 87341 | 75329 | ... | 316834 | 177093 | 847765 | 208125 | 103269 | 81571 | 48787 | 54200 | 41249 | 69170 |
| 2021-04-01 | 378402 | 1369304 | 712644 | 451372 | 226476 | 516146 | 124531 | 706069 | 84283 | 70355 | ... | 319841 | 154719 | 765199 | 187883 | 89741 | 70523 | 71019 | 51844 | 35284 | 86207 |
| 2021-05-01 | 599117 | 1674445 | 1025889 | 501143 | 280176 | 608248 | 179928 | 975559 | 93531 | 50771 | ... | 372363 | 187679 | 937945 | 237647 | 117211 | 88146 | 50091 | 57892 | 31565 | 56054 |
| 2021-06-01 | 457822 | 1571487 | 894952 | 521519 | 255590 | 574663 | 159098 | 791886 | 93222 | 65954 | ... | 344017 | 183102 | 928134 | 212043 | 100327 | 91217 | 55585 | 57866 | 42558 | 86681 |
| 2021-07-01 | 445355 | 1127318 | 664848 | 486997 | 240188 | 499604 | 126188 | 564563 | 73819 | 36721 | ... | 237853 | 155542 | 838925 | 190375 | 92090 | 89158 | 32749 | 44031 | 26814 | 50949 |
| 2021-08-01 | 397120 | 1139616 | 635405 | 418261 | 205004 | 477028 | 123317 | 602800 | 62355 | 40978 | ... | 237457 | 131074 | 723167 | 179936 | 85478 | 80028 | 38200 | 46619 | 29913 | 48378 |
| 2021-09-01 | 440652 | 1329028 | 717460 | 480952 | 234360 | 554767 | 139828 | 749160 | 80206 | 73747 | ... | 290810 | 157759 | 824543 | 214553 | 97555 | 90870 | 46237 | 51543 | 42337 | 90643 |
| 2021-10-01 | 490983 | 1641459 | 829981 | 542388 | 277376 | 624377 | 160489 | 835530 | 109459 | 88509 | ... | 340274 | 187825 | 960245 | 237909 | 104446 | 91955 | 52031 | 67386 | 40861 | 79326 |
| 2021-11-01 | 445046 | 1433761 | 733146 | 503440 | 247704 | 568239 | 138376 | 760453 | 101097 | 85577 | ... | 333070 | 168918 | 842440 | 220257 | 93069 | 86912 | 51355 | 51408 | 33842 | 63345 |
| 2021-12-01 | 615908 | 2256408 | 1084422 | 735090 | 367540 | 796983 | 210851 | 1089221 | 140399 | 122247 | ... | 403468 | 243526 | 1091834 | 293377 | 122720 | 109793 | 68109 | 73794 | 55063 | 114802 |
| 2022-01-01 | 526417 | 2022964 | 926043 | 636543 | 302504 | 650971 | 180768 | 878496 | 122602 | 93349 | ... | 327133 | 195589 | 930906 | 243982 | 104369 | 86174 | 41334 | 60617 | 35776 | 71001 |
| 2022-02-01 | 501651 | 1636066 | 814741 | 581783 | 255285 | 538004 | 137886 | 694763 | 99338 | 75268 | ... | 260815 | 173663 | 803391 | 220654 | 88530 | 83763 | 35725 | 55228 | 30984 | 63721 |
| 2022-03-01 | 585675 | 1846809 | 1007630 | 673534 | 313009 | 691513 | 172874 | 866807 | 142414 | 105778 | ... | 347157 | 609507 | 3267252 | 1495127 | 151616 | 425016 | 49734 | 141231 | 37297 | 76243 |
| 2022-04-01 | 434633 | 1658463 | 838560 | 597000 | 310853 | 725485 | 160737 | 934561 | 125002 | 104207 | ... | 349618 | 691868 | 3768595 | 1585129 | 140420 | 516032 | 57885 | 152337 | 34020 | 69361 |
| 2022-05-01 | 935025 | 2896949 | 1655583 | 897026 | 449078 | 970391 | 293433 | 1412731 | 183098 | 138874 | ... | 503507 | 817447 | 4619651 | 1592211 | 189314 | 611768 | 56722 | 166862 | 38551 | 77379 |
| 2022-06-01 | 566361 | 1987624 | 988346 | 692293 | 316554 | 679215 | 173024 | 866263 | 135070 | 147934 | ... | 394131 | 597158 | 2492319 | 1050720 | 130595 | 409575 | 51382 | 140421 | 39956 | 81989 |
| 2022-07-01 | 748573 | 2216932 | 1176922 | 795698 | 364514 | 834754 | 203448 | 1043996 | 146618 | 149456 | ... | 436556 | 646673 | 2732814 | 1231851 | 140784 | 442861 | 48932 | 157797 | 39706 | 86039 |
| 2022-08-01 | 531072 | 1678953 | 905311 | 662795 | 285681 | 659155 | 158883 | 772720 | 117743 | 123680 | ... | 352431 | 532060 | 2136650 | 1097809 | 113456 | 373165 | 46979 | 135693 | 40948 | 84147 |
| 2022-09-01 | 500673 | 1664991 | 891560 | 677309 | 280278 | 668784 | 159439 | 833337 | 120832 | 123914 | ... | 360004 | 515189 | 1803376 | 1044426 | 109350 | 318147 | 52568 | 132686 | 39159 | 78700 |
| 2022-10-01 | 513056 | 1785747 | 949081 | 692329 | 289153 | 665454 | 154957 | 834108 | 126635 | 132432 | ... | 365860 | 543272 | 1922182 | 1056378 | 100365 | 311722 | 52357 | 119219 | 40627 | 81068 |
| 2022-11-01 | 471520 | 1525633 | 877671 | 640199 | 262087 | 603787 | 133058 | 762778 | 115001 | 131230 | ... | 322748 | 555548 | 1834305 | 1136194 | 92496 | 310736 | 43671 | 115762 | 36457 | 78388 |
| 2022-12-01 | 639922 | 2283325 | 1307815 | 857727 | 351987 | 804851 | 185142 | 1025144 | 144054 | 185232 | ... | 401895 | 575043 | 2287771 | 1028565 | 117518 | 345542 | 75278 | 133388 | 56395 | 111840 |
| 2023-01-01 | 663437 | 2962641 | 1345098 | 914340 | 380949 | 870450 | 211866 | 1149078 | 164006 | 176025 | ... | 421675 | 667588 | 2682502 | 1372219 | 139879 | 423949 | 66046 | 118409 | 47444 | 94530 |
| 2023-02-01 | 517850 | 1870691 | 1024017 | 729078 | 293566 | 714967 | 151670 | 900023 | 124730 | 153373 | ... | 329629 | 567749 | 2225280 | 1299527 | 114908 | 380529 | 49253 | 109334 | 38921 | 76336 |
| 2023-03-01 | 557272 | 1852752 | 1056957 | 759760 | 302700 | 703181 | 154106 | 877374 | 139812 | 162989 | ... | 358498 | 695711 | 2455952 | 1389727 | 132863 | 425711 | 55659 | 136684 | 40975 | 87194 |
| 2023-04-01 | 756915 | 2673955 | 1373374 | 935938 | 414742 | 1010231 | 248057 | 1429885 | 185529 | 162775 | ... | 468296 | 702310 | 2503880 | 1281173 | 164216 | 399963 | 62401 | 142086 | 39759 | 87917 |
| 2023-05-01 | 791968 | 2556839 | 1538507 | 977332 | 421741 | 1021583 | 241660 | 1376686 | 209111 | 200190 | ... | 460407 | 716311 | 2472401 | 1294740 | 162712 | 406264 | 75390 | 148300 | 49782 | 100494 |
| 2023-06-01 | 701963 | 2416258 | 1407632 | 1016640 | 424987 | 968252 | 225886 | 1208281 | 218299 | 230629 | ... | 480374 | 465410 | 1983399 | 899696 | 154749 | 297134 | 85195 | 162908 | 62022 | 133566 |
| 2023-07-01 | 871519 | 2462212 | 1413899 | 1048542 | 433896 | 1013893 | 241961 | 1293197 | 234099 | 211471 | ... | 492400 | 377459 | 2212555 | 838914 | 156871 | 294755 | 77652 | 157597 | 58569 | 123085 |
| 2023-08-01 | 618671 | 1889717 | 1072952 | 893939 | 375376 | 867202 | 199228 | 997673 | 206938 | 180206 | ... | 422694 | 302353 | 1397173 | 480612 | 134793 | 157794 | 78196 | 144689 | 53329 | 114107 |
| 2023-09-01 | 565184 | 1847654 | 1083013 | 866457 | 368132 | 867562 | 204566 | 1030417 | 188694 | 179288 | ... | 440086 | 251645 | 1188982 | 376071 | 139730 | 110449 | 69657 | 135130 | 46999 | 107044 |
| 2023-10-01 | 588020 | 1958158 | 1121805 | 908253 | 386128 | 858520 | 209482 | 1058924 | 173431 | 186323 | ... | 427074 | 264313 | 1177955 | 365686 | 131858 | 111448 | 79054 | 126786 | 53875 | 119299 |
| 2023-11-01 | 637519 | 1870337 | 904282 | 762348 | 371185 | 725317 | 187859 | 894880 | 137343 | 166685 | ... | 390052 | 284303 | 1233382 | 386244 | 125945 | 126041 | 78630 | 123916 | 57701 | 125457 |
| 2023-12-01 | 1673468 | 3251911 | 1350709 | 1334426 | 609785 | 1373335 | 680801 | 1544279 | 400977 | 285542 | ... | 707661 | 993915 | 3893499 | 1085338 | 347397 | 376924 | 284711 | 302181 | 213062 | 419322 |
60 rows × 34 columns
test_data = data.loc['2024-01-01':'2024-06-01']
test_data
| ACEH | SUMATERA UTARA | SUMATERA BARAT | RIAU | JAMBI | SUMATERA SELATAN | BENGKULU | LAMPUNG | KEP. BANGKA BELITUNG | KEP. RIAU | ... | SULAWESI UTARA | SULAWESI TENGAH | SULAWESI SELATAN | SULAWESI TENGGARA | GORONTALO | SULAWESI BARAT | MALUKU | MALUKU UTARA | PAPUA BARAT | PAPUA | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| time_series | |||||||||||||||||||||
| 2024-01-01 | 1009785 | 4055407 | 1767621 | 1546102 | 665652 | 1425715 | 361373 | 1618490 | 250498 | 291092 | ... | 700470 | 941412 | 3390270 | 1200314 | 284274 | 396450 | 190408 | 190002 | 44841 | 129823 |
| 2024-02-01 | 937728 | 3392029 | 1758610 | 1449021 | 610850 | 1319045 | 308036 | 1338941 | 237943 | 290290 | ... | 628713 | 831294 | 3016298 | 1145554 | 270873 | 354721 | 156854 | 174338 | 38474 | 102856 |
| 2024-03-01 | 905565 | 3149185 | 1281044 | 1434953 | 612554 | 1285518 | 298351 | 1260766 | 224732 | 268990 | ... | 625920 | 809385 | 2891023 | 1039727 | 274795 | 325813 | 161337 | 163305 | 35649 | 103119 |
| 2024-04-01 | 1282532 | 3548654 | 1660760 | 1750903 | 886241 | 1854471 | 477429 | 1702675 | 297882 | 333667 | ... | 762190 | 1061864 | 3551378 | 1442912 | 376567 | 443291 | 190504 | 206819 | 36469 | 107380 |
| 2024-05-01 | 995794 | 3419857 | 1302524 | 1488391 | 662793 | 1326810 | 339591 | 1508526 | 237959 | 276392 | ... | 668197 | 814471 | 3087984 | 1070042 | 285885 | 342758 | 141499 | 161274 | 30025 | 90245 |
| 2024-06-01 | 1065780 | 3369808 | 1642366 | 1446350 | 665827 | 1361245 | 358206 | 1658113 | 235572 | 241548 | ... | 671549 | 774521 | 3145350 | 1110037 | 287451 | 344329 | 117608 | 143794 | 24109 | 80858 |
6 rows × 34 columns
Feature engineering¶
Creating growth_rate feature for each province per year¶
# Calculating the total visits per year for each province
total_2019 = data.iloc[:12, :].sum(axis=0) # Total for 2019
total_2020 = data.iloc[12:24, :].sum(axis=0) # Total for 2020
total_2021 = data.iloc[24:36, :].sum(axis=0) # Total for 2021
total_2022 = data.iloc[36:48, :].sum(axis=0) # Total for 2022
total_2023 = data.iloc[48:60, :].sum(axis=0) # Total for 2023
# Create a DataFrame to store the growth rate
growth_rate = pd.DataFrame()
# Calculate the Growth Rate per year for each province
growth_rate['growth_rate_2020'] = (
(total_2020 - total_2019) / total_2019.replace(0, pd.NA) * 100
)
growth_rate['growth_rate_2021'] = (
(total_2021 - total_2020) / total_2020.replace(0, pd.NA) * 100
)
growth_rate['growth_rate_2022'] = (
(total_2022 - total_2021) / total_2021.replace(0, pd.NA) * 100
)
growth_rate['growth_rate_2023'] = (
(total_2023 - total_2022) / total_2022.replace(0, pd.NA) * 100
)
# Transpose the DataFrame to switch rows and columns
growth_rate_data = growth_rate.transpose()
# Set index name
growth_rate_data.index.name = 'Year'
# Display the result
growth_rate_data
| ACEH | SUMATERA UTARA | SUMATERA BARAT | RIAU | JAMBI | SUMATERA SELATAN | BENGKULU | LAMPUNG | KEP. BANGKA BELITUNG | KEP. RIAU | ... | SULAWESI UTARA | SULAWESI TENGAH | SULAWESI SELATAN | SULAWESI TENGGARA | GORONTALO | SULAWESI BARAT | MALUKU | MALUKU UTARA | PAPUA BARAT | PAPUA | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Year | |||||||||||||||||||||
| growth_rate_2020 | -73.550631 | -70.688632 | -58.020593 | -70.248789 | -62.816269 | -61.304972 | -62.905392 | -49.915071 | -60.228961 | -82.579122 | ... | -21.107375 | -67.762870 | -62.258247 | -64.433461 | -37.022793 | -64.170863 | -80.546478 | -68.463226 | -80.308734 | -75.176830 |
| growth_rate_2021 | 33.610957 | 26.425443 | 21.679065 | 11.579717 | 13.507045 | 17.105093 | 16.465606 | 7.637406 | 10.132730 | 12.083328 | ... | 50.473495 | 28.969370 | 10.993218 | 30.163358 | 40.182629 | 27.218624 | 58.731714 | 33.815453 | 41.611434 | 35.046364 |
| growth_rate_2022 | 25.660807 | 30.669089 | 28.481633 | 36.803972 | 24.081910 | 24.387649 | 19.368462 | 19.057029 | 48.348056 | 80.854929 | ... | 18.454485 | 218.367062 | 179.614532 | 395.245191 | 24.392302 | 291.177199 | -4.251249 | 124.651370 | -3.119349 | 3.532757 |
| growth_rate_2023 | 28.602857 | 18.999234 | 19.069064 | 32.636125 | 26.506440 | 29.463280 | 39.906957 | 25.947921 | 50.973038 | 51.883411 | ... | 22.094596 | -2.540672 | -11.092096 | -13.401336 | 28.881813 | -17.086783 | 73.343324 | 19.638099 | 62.263661 | 65.474603 |
4 rows × 34 columns
Create and import new growth rate data¶
# Save the growth rate data to CSV
growth_rate_data.to_csv("growth_rate_data.csv")
# Load the dataset
growth_rate_data = pd.read_csv("growth_rate_data.csv")
# Set the 'Year' column as the index
growth_rate_data.set_index('Year', inplace=True)
growth_rate_data
| ACEH | SUMATERA UTARA | SUMATERA BARAT | RIAU | JAMBI | SUMATERA SELATAN | BENGKULU | LAMPUNG | KEP. BANGKA BELITUNG | KEP. RIAU | ... | SULAWESI UTARA | SULAWESI TENGAH | SULAWESI SELATAN | SULAWESI TENGGARA | GORONTALO | SULAWESI BARAT | MALUKU | MALUKU UTARA | PAPUA BARAT | PAPUA | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Year | |||||||||||||||||||||
| growth_rate_2020 | -73.550631 | -70.688632 | -58.020593 | -70.248789 | -62.816269 | -61.304972 | -62.905392 | -49.915071 | -60.228961 | -82.579122 | ... | -21.107375 | -67.762870 | -62.258247 | -64.433461 | -37.022793 | -64.170863 | -80.546478 | -68.463226 | -80.308734 | -75.176830 |
| growth_rate_2021 | 33.610957 | 26.425443 | 21.679065 | 11.579717 | 13.507045 | 17.105093 | 16.465606 | 7.637406 | 10.132730 | 12.083328 | ... | 50.473495 | 28.969370 | 10.993218 | 30.163358 | 40.182629 | 27.218624 | 58.731714 | 33.815453 | 41.611434 | 35.046364 |
| growth_rate_2022 | 25.660807 | 30.669089 | 28.481633 | 36.803972 | 24.081910 | 24.387649 | 19.368462 | 19.057029 | 48.348056 | 80.854929 | ... | 18.454485 | 218.367062 | 179.614532 | 395.245191 | 24.392302 | 291.177199 | -4.251249 | 124.651370 | -3.119349 | 3.532757 |
| growth_rate_2023 | 28.602857 | 18.999234 | 19.069064 | 32.636125 | 26.506440 | 29.463280 | 39.906957 | 25.947921 | 50.973038 | 51.883411 | ... | 22.094596 | -2.540672 | -11.092096 | -13.401336 | 28.881813 | -17.086783 | 73.343324 | 19.638099 | 62.263661 | 65.474603 |
4 rows × 34 columns
Check data stationarity¶
Function to check stationarity using ACF plot¶
from statsmodels.graphics.tsaplots import plot_acf
def make_acf_plot(series):
plot_acf(series, lags=36, title='Autocorrelation Plot for {}'.format(series.name))
Make ACF plot for each province¶
provinces = data.columns
for province in provinces:
make_acf_plot(training_data[province])
Function to check stationarity using PACF Plot¶
from statsmodels.graphics.tsaplots import plot_pacf
def make_pacf_plot(series, lags):
plot_pacf(series, lags=lags, title='Partial Autocorrelation Plot for {}'.format(series.name))
Make PACF plot for each province¶
for province in provinces:
max_lags = min(36, len(province) // 2)
make_pacf_plot(training_data[province], max_lags)
Function to check stationarity using Augmented Dickey-Fuller¶
from statsmodels.tsa.stattools import adfuller
# Function to check stationarity using ADF test
def check_stationarity_adf(series, index, stationary_provinces, non_stationary_provinces):
result = adfuller(series)
print(f"{index}. PROVINCE: {series.name}")
print(" a. ADF Statistic:", result[0])
print(" b. p-value:", result[1])
if result[1] <= 0.05:
print(f" c. Stationarity: {series.name} is Stationary")
stationary_provinces.append(series.name) # Add to stationary list
else:
print(f" c. Stationarity: {series.name} is Non-Stationary")
non_stationary_provinces.append(series.name) # Add to non-stationary list
print(" d. Number of Lags:", result[2])
print(" e. Number of Observations Used:", result[3])
print(" f. Critical Values:")
for key, value in result[4].items():
print(f" \t{key}: {value}")
print(("=" * 50) + "\n")
Check stationarity for each province using Augmented Dickey-Fuller¶
# Lists to store stationary and non-stationary provinces
stationary_provinces = []
non_stationary_provinces = []
# Apply the check_stationarity_adf function to each province
i = 1
for province in data.columns:
check_stationarity_adf(training_data[province], i, stationary_provinces, non_stationary_provinces)
i += 1
1. PROVINCE: ACEH a. ADF Statistic: -2.6710185203108607 b. p-value: 0.07918899093143678 c. Stationarity: ACEH is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 2. PROVINCE: SUMATERA UTARA a. ADF Statistic: -3.641050892386336 b. p-value: 0.005023016623325027 c. Stationarity: SUMATERA UTARA is Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 3. PROVINCE: SUMATERA BARAT a. ADF Statistic: -3.027760309318199 b. p-value: 0.03238201252177422 c. Stationarity: SUMATERA BARAT is Stationary d. Number of Lags: 1 e. Number of Observations Used: 58 f. Critical Values: 1%: -3.548493559596539 5%: -2.912836594776334 10%: -2.594129155766944 ================================================== 4. PROVINCE: RIAU a. ADF Statistic: -2.339328533334447 b. p-value: 0.15959718785926064 c. Stationarity: RIAU is Non-Stationary d. Number of Lags: 1 e. Number of Observations Used: 58 f. Critical Values: 1%: -3.548493559596539 5%: -2.912836594776334 10%: -2.594129155766944 ================================================== 5. PROVINCE: JAMBI a. ADF Statistic: -3.4413152215306777 b. p-value: 0.009628528086471496 c. Stationarity: JAMBI is Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 6. PROVINCE: SUMATERA SELATAN a. ADF Statistic: -3.7966475064460465 b. p-value: 0.0029418022353743896 c. Stationarity: SUMATERA SELATAN is Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 7. PROVINCE: BENGKULU a. ADF Statistic: -2.4182335669918245 b. p-value: 0.1366561115599484 c. Stationarity: BENGKULU is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 8. PROVINCE: LAMPUNG a. ADF Statistic: -4.690990814504573 b. p-value: 8.749399120685386e-05 c. Stationarity: LAMPUNG is Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 9. PROVINCE: KEP. BANGKA BELITUNG a. ADF Statistic: -2.1514513677531246 b. p-value: 0.2243349565012021 c. Stationarity: KEP. BANGKA BELITUNG is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 10. PROVINCE: KEP. RIAU a. ADF Statistic: -2.612790568623438 b. p-value: 0.09038242711224997 c. Stationarity: KEP. RIAU is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 11. PROVINCE: DKI JAKARTA a. ADF Statistic: -1.6836826947450272 b. p-value: 0.4395386444395364 c. Stationarity: DKI JAKARTA is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 12. PROVINCE: JAWA BARAT a. ADF Statistic: -3.077859603812104 b. p-value: 0.028235658904560344 c. Stationarity: JAWA BARAT is Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 13. PROVINCE: JAWA TENGAH a. ADF Statistic: -3.7808535418814055 b. p-value: 0.0031093965600096267 c. Stationarity: JAWA TENGAH is Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 14. PROVINCE: DI YOGYAKARTA a. ADF Statistic: -3.804538339098204 b. p-value: 0.0028612216647321454 c. Stationarity: DI YOGYAKARTA is Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 15. PROVINCE: JAWA TIMUR a. ADF Statistic: -2.0485571752382805 b. p-value: 0.2656963571084213 c. Stationarity: JAWA TIMUR is Non-Stationary d. Number of Lags: 1 e. Number of Observations Used: 58 f. Critical Values: 1%: -3.548493559596539 5%: -2.912836594776334 10%: -2.594129155766944 ================================================== 16. PROVINCE: BANTEN a. ADF Statistic: -3.0213835515011582 b. p-value: 0.032945128666594825 c. Stationarity: BANTEN is Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 17. PROVINCE: BALI a. ADF Statistic: -1.8090932798327368 b. p-value: 0.3759565695603854 c. Stationarity: BALI is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 18. PROVINCE: NUSA TENGGARA BARAT a. ADF Statistic: -2.199211026853943 b. p-value: 0.20653193320898494 c. Stationarity: NUSA TENGGARA BARAT is Non-Stationary d. Number of Lags: 1 e. Number of Observations Used: 58 f. Critical Values: 1%: -3.548493559596539 5%: -2.912836594776334 10%: -2.594129155766944 ================================================== 19. PROVINCE: NUSA TENGGARA TIMUR a. ADF Statistic: -3.3566985947313377 b. p-value: 0.012526617208591993 c. Stationarity: NUSA TENGGARA TIMUR is Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 20. PROVINCE: KALIMANTAN BARAT a. ADF Statistic: -2.627592656292735 b. p-value: 0.08742746046355293 c. Stationarity: KALIMANTAN BARAT is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 21. PROVINCE: KALIMANTAN TENGAH a. ADF Statistic: -1.9834503302108013 b. p-value: 0.29387636217954116 c. Stationarity: KALIMANTAN TENGAH is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 22. PROVINCE: KALIMANTAN SELATAN a. ADF Statistic: -2.202627919206674 b. p-value: 0.20529305674002185 c. Stationarity: KALIMANTAN SELATAN is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 23. PROVINCE: KALIMANTAN TIMUR a. ADF Statistic: -1.727324034157437 b. p-value: 0.41709213193376937 c. Stationarity: KALIMANTAN TIMUR is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 24. PROVINCE: KALIMANTAN UTARA a. ADF Statistic: -2.4305054684521687 b. p-value: 0.1333108975464708 c. Stationarity: KALIMANTAN UTARA is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 25. PROVINCE: SULAWESI UTARA a. ADF Statistic: -1.5387773340473792 b. p-value: 0.514249040182932 c. Stationarity: SULAWESI UTARA is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 26. PROVINCE: SULAWESI TENGAH a. ADF Statistic: -1.564988024666247 b. p-value: 0.5011533121191761 c. Stationarity: SULAWESI TENGAH is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 27. PROVINCE: SULAWESI SELATAN a. ADF Statistic: -2.3407846462949733 b. p-value: 0.15915118577115633 c. Stationarity: SULAWESI SELATAN is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 28. PROVINCE: SULAWESI TENGGARA a. ADF Statistic: -1.860754094346674 b. p-value: 0.35074274116989074 c. Stationarity: SULAWESI TENGGARA is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 29. PROVINCE: GORONTALO a. ADF Statistic: -1.5840773077653814 b. p-value: 0.4915868931562521 c. Stationarity: GORONTALO is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 30. PROVINCE: SULAWESI BARAT a. ADF Statistic: -1.8899339923291565 b. p-value: 0.33681119469576576 c. Stationarity: SULAWESI BARAT is Non-Stationary d. Number of Lags: 3 e. Number of Observations Used: 56 f. Critical Values: 1%: -3.552928203580539 5%: -2.9147306250000002 10%: -2.595137155612245 ================================================== 31. PROVINCE: MALUKU a. ADF Statistic: -3.157727868497206 b. p-value: 0.022565694044091495 c. Stationarity: MALUKU is Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 32. PROVINCE: MALUKU UTARA a. ADF Statistic: -1.3804271529592522 b. p-value: 0.5916227900873192 c. Stationarity: MALUKU UTARA is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 33. PROVINCE: PAPUA BARAT a. ADF Statistic: -2.4475441169750076 b. p-value: 0.12876441996031857 c. Stationarity: PAPUA BARAT is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ================================================== 34. PROVINCE: PAPUA a. ADF Statistic: -2.1985390596052574 b. p-value: 0.2067761211877392 c. Stationarity: PAPUA is Non-Stationary d. Number of Lags: 0 e. Number of Observations Used: 59 f. Critical Values: 1%: -3.5463945337644063 5%: -2.911939409384601 10%: -2.5936515282964665 ==================================================
List stationary and non-stationary provinces¶
# Print the results
print("Stationary Provinces:")
print(", ".join(stationary_provinces))
print("\nNon-Stationary Provinces:")
print(", ".join(non_stationary_provinces))
Stationary Provinces: SUMATERA UTARA, SUMATERA BARAT, JAMBI, SUMATERA SELATAN, LAMPUNG, JAWA BARAT, JAWA TENGAH, DI YOGYAKARTA, BANTEN, NUSA TENGGARA TIMUR, MALUKU Non-Stationary Provinces: ACEH, RIAU, BENGKULU, KEP. BANGKA BELITUNG, KEP. RIAU, DKI JAKARTA, JAWA TIMUR, BALI, NUSA TENGGARA BARAT, KALIMANTAN BARAT, KALIMANTAN TENGAH, KALIMANTAN SELATAN, KALIMANTAN TIMUR, KALIMANTAN UTARA, SULAWESI UTARA, SULAWESI TENGAH, SULAWESI SELATAN, SULAWESI TENGGARA, GORONTALO, SULAWESI BARAT, MALUKU UTARA, PAPUA BARAT, PAPUA
Descriptive statistic¶
data = pd.read_csv("cleaned_data.csv")
# Set the 'time_series' column as the index
data.set_index('time_series', inplace=True)
data
| ACEH | SUMATERA UTARA | SUMATERA BARAT | RIAU | JAMBI | SUMATERA SELATAN | BENGKULU | LAMPUNG | KEP. BANGKA BELITUNG | KEP. RIAU | ... | SULAWESI UTARA | SULAWESI TENGAH | SULAWESI SELATAN | SULAWESI TENGGARA | GORONTALO | SULAWESI BARAT | MALUKU | MALUKU UTARA | PAPUA BARAT | PAPUA | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| time_series | |||||||||||||||||||||
| 2019-01-01 | 1387574 | 5094564 | 1667509 | 1990985 | 828879 | 1763349 | 414287 | 2082997 | 298322 | 434786 | ... | 256496 | 451254 | 2054894 | 534762 | 90789 | 197588 | 258094 | 125514 | 185287 | 313389 |
| 2019-02-01 | 1111607 | 3282713 | 1313185 | 1425092 | 652908 | 1294947 | 304721 | 1612674 | 240226 | 351865 | ... | 112937 | 308973 | 1402775 | 405350 | 48019 | 134391 | 193290 | 76500 | 143094 | 209857 |
| 2019-03-01 | 1113176 | 3442407 | 1420799 | 1541155 | 716028 | 1356470 | 336570 | 1606207 | 255054 | 358547 | ... | 197795 | 374463 | 1654575 | 436423 | 84467 | 163587 | 206894 | 166014 | 159903 | 224960 |
| 2019-04-01 | 1155705 | 3676763 | 1573606 | 1563303 | 547378 | 1099872 | 287546 | 1164672 | 199678 | 360392 | ... | 221246 | 374029 | 1799377 | 487941 | 102283 | 174495 | 216036 | 190003 | 152087 | 209282 |
| 2019-05-01 | 1070909 | 3469100 | 1511963 | 1574681 | 438508 | 917156 | 258241 | 877643 | 122301 | 358416 | ... | 235233 | 368161 | 1653101 | 445093 | 109827 | 152740 | 228658 | 163855 | 161711 | 235428 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2024-02-01 | 937728 | 3392029 | 1758610 | 1449021 | 610850 | 1319045 | 308036 | 1338941 | 237943 | 290290 | ... | 628713 | 831294 | 3016298 | 1145554 | 270873 | 354721 | 156854 | 174338 | 38474 | 102856 |
| 2024-03-01 | 905565 | 3149185 | 1281044 | 1434953 | 612554 | 1285518 | 298351 | 1260766 | 224732 | 268990 | ... | 625920 | 809385 | 2891023 | 1039727 | 274795 | 325813 | 161337 | 163305 | 35649 | 103119 |
| 2024-04-01 | 1282532 | 3548654 | 1660760 | 1750903 | 886241 | 1854471 | 477429 | 1702675 | 297882 | 333667 | ... | 762190 | 1061864 | 3551378 | 1442912 | 376567 | 443291 | 190504 | 206819 | 36469 | 107380 |
| 2024-05-01 | 995794 | 3419857 | 1302524 | 1488391 | 662793 | 1326810 | 339591 | 1508526 | 237959 | 276392 | ... | 668197 | 814471 | 3087984 | 1070042 | 285885 | 342758 | 141499 | 161274 | 30025 | 90245 |
| 2024-06-01 | 1065780 | 3369808 | 1642366 | 1446350 | 665827 | 1361245 | 358206 | 1658113 | 235572 | 241548 | ... | 671549 | 774521 | 3145350 | 1110037 | 287451 | 344329 | 117608 | 143794 | 24109 | 80858 |
66 rows × 34 columns
Calculating descriptive statistics¶
data.describe().T.round(2)
| count | mean | std | min | 25% | 50% | 75% | max | |
|---|---|---|---|---|---|---|---|---|
| ACEH | 66.0 | 718680.58 | 382615.41 | 157764.0 | 445123.25 | 576018.0 | 981277.50 | 1800152.0 |
| SUMATERA UTARA | 66.0 | 2295125.79 | 1142919.54 | 442072.0 | 1441869.00 | 1880204.0 | 3241127.25 | 5774370.0 |
| SUMATERA BARAT | 66.0 | 1102163.92 | 450389.00 | 226466.0 | 799032.25 | 1024953.0 | 1349306.25 | 2910574.0 |
| RIAU | 66.0 | 891240.53 | 468403.57 | 215636.0 | 513913.00 | 732084.0 | 1128224.50 | 2179811.0 |
| JAMBI | 66.0 | 388174.82 | 176172.31 | 114969.0 | 251382.75 | 321290.0 | 519181.75 | 886241.0 |
| SUMATERA SELATAN | 66.0 | 845210.15 | 364133.13 | 223800.0 | 560212.50 | 725401.0 | 1080299.75 | 1854471.0 |
| BENGKULU | 66.0 | 221263.94 | 110636.98 | 61421.0 | 140032.75 | 182751.0 | 293212.75 | 680801.0 |
| LAMPUNG | 66.0 | 1037864.09 | 367953.26 | 356647.0 | 774298.50 | 917292.0 | 1274990.50 | 2082997.0 |
| KEP. BANGKA BELITUNG | 66.0 | 150078.71 | 71315.41 | 34757.0 | 93299.25 | 136206.5 | 197383.75 | 400977.0 |
| KEP. RIAU | 66.0 | 172271.14 | 117132.36 | 17661.0 | 74127.25 | 143404.0 | 262817.50 | 460205.0 |
| DKI JAKARTA | 66.0 | 4433348.74 | 1552839.20 | 800210.0 | 3491046.75 | 4554059.5 | 5544983.00 | 7514043.0 |
| JAWA BARAT | 66.0 | 10613106.47 | 3110295.40 | 2572442.0 | 8589925.00 | 10942225.0 | 12650204.00 | 17758640.0 |
| JAWA TENGAH | 66.0 | 10193064.50 | 3010379.59 | 3635334.0 | 8138358.50 | 10276045.5 | 11654916.75 | 17809415.0 |
| DI YOGYAKARTA | 66.0 | 2108625.33 | 724740.63 | 665050.0 | 1681075.50 | 2068626.5 | 2569083.25 | 4267235.0 |
| JAWA TIMUR | 66.0 | 13596095.94 | 5006523.07 | 3397447.0 | 9816701.50 | 12883755.5 | 17434262.75 | 27190607.0 |
| BANTEN | 66.0 | 3253867.20 | 776173.10 | 1058760.0 | 2693869.25 | 3323129.0 | 3904923.25 | 4804045.0 |
| BALI | 66.0 | 1266224.14 | 483079.22 | 261406.0 | 883655.50 | 1252137.0 | 1668700.25 | 2090327.0 |
| NUSA TENGGARA BARAT | 66.0 | 585661.68 | 391182.33 | 114758.0 | 287080.50 | 401643.0 | 772498.25 | 1718321.0 |
| NUSA TENGGARA TIMUR | 66.0 | 385251.06 | 199238.15 | 78698.0 | 233290.50 | 316738.0 | 590989.75 | 800071.0 |
| KALIMANTAN BARAT | 66.0 | 382871.83 | 238703.12 | 58284.0 | 193327.50 | 301044.5 | 627326.25 | 965873.0 |
| KALIMANTAN TENGAH | 66.0 | 300917.70 | 166820.62 | 75118.0 | 178419.50 | 236010.5 | 458173.00 | 867859.0 |
| KALIMANTAN SELATAN | 66.0 | 554253.20 | 269398.74 | 140584.0 | 379606.25 | 475192.0 | 685249.75 | 1781498.0 |
| KALIMANTAN TIMUR | 66.0 | 514911.64 | 297020.13 | 91121.0 | 218684.25 | 527827.5 | 767912.50 | 1174998.0 |
| KALIMANTAN UTARA | 66.0 | 53940.70 | 40851.64 | 8536.0 | 25372.00 | 33838.0 | 76940.00 | 144538.0 |
| SULAWESI UTARA | 66.0 | 352061.21 | 150507.57 | 58036.0 | 262433.75 | 334257.5 | 417123.25 | 762190.0 |
| SULAWESI TENGAH | 66.0 | 400738.73 | 259692.87 | 65380.0 | 174487.25 | 371095.0 | 573219.50 | 1061864.0 |
| SULAWESI SELATAN | 66.0 | 1772237.68 | 990506.82 | 287133.0 | 914344.50 | 1726976.0 | 2440798.75 | 4619651.0 |
| SULAWESI TENGGARA | 66.0 | 621230.98 | 470552.20 | 71224.0 | 210411.00 | 437835.5 | 1066626.00 | 1592211.0 |
| GORONTALO | 66.0 | 129516.33 | 69744.69 | 27476.0 | 92247.75 | 114182.0 | 139841.75 | 376567.0 |
| SULAWESI BARAT | 66.0 | 216077.35 | 144775.77 | 22014.0 | 88399.00 | 168413.0 | 343936.25 | 611768.0 |
| MALUKU | 66.0 | 87080.08 | 67570.06 | 7978.0 | 46422.50 | 60143.0 | 102468.75 | 284711.0 |
| MALUKU UTARA | 66.0 | 108003.88 | 56533.29 | 12649.0 | 52433.00 | 118814.0 | 147397.25 | 302181.0 |
| PAPUA BARAT | 66.0 | 60737.50 | 48973.59 | 9348.0 | 34532.50 | 40961.5 | 56455.00 | 213062.0 |
| PAPUA | 66.0 | 114269.74 | 74771.29 | 24783.0 | 69771.00 | 86937.5 | 125236.00 | 419322.0 |
Mean of domestic tourist visits per province¶
# Calculating the mean for each feature
mean = data.mean().round(2)
# Creating a mean plot
plt.figure(figsize=(12, 6))
plt.plot(mean, marker='o', color='r')
# Adding numbers to each point on the plot
for i, value in enumerate(mean):
plt.text(i, value, f'{value/1e6:.2f}', ha='center', va='bottom', fontsize=10)
plt.title('Mean Number of Domestic Tourist Visits per Province (January 2019 - June 2024)')
plt.xlabel('Province')
plt.ylabel('Mean (millions)')
plt.xticks(rotation=90)
plt.grid()
plt.tight_layout()
plt.show()
Median of domestic tourist visits per province¶
# Calculating the median for each feature
median = data.median().round(2)
# Creating a median plot
plt.figure(figsize=(12, 6))
plt.plot(median.index, median / 1e6, marker='o', color='blue', linestyle='-', label='Median Visits')
# Adding numbers to each point on the plot
for i, value in enumerate(median):
plt.text(i, value / 1e6, f'{value / 1e6:.2f}', ha='center', va='bottom', fontsize=9, color='darkblue')
# Adding labels and title
plt.title('Median Number of Domestic Tourist Visits per Province (January 2019 - June 2024)', fontsize=14)
plt.xlabel('Province', fontsize=12)
plt.ylabel('Median (in millions)', fontsize=12)
plt.xticks(rotation=90, fontsize=10)
plt.yticks(fontsize=10)
plt.grid(alpha=0.3)
plt.legend()
# Show the plot
plt.show()
Standard deviation of domestic tourist visits per province¶
# Calculating the standard deviation
std = data.std().round(2)
# Creating a standard deviation plot
plt.figure(figsize=(12, 6))
plt.plot(std, marker='o', color='r')
# Adding numbers to each point on the plot
for i, value in enumerate(std):
plt.text(i, value, f'{value/1e6:.2f}', ha='center', va='bottom', fontsize=10)
plt.title('Standard Deviation of Domestic Tourist Visits per Province (January 2019 - June 2024)')
plt.xlabel('Province')
plt.ylabel('Standard Deviation (millions)')
plt.xticks(rotation=90)
plt.grid()
plt.show()
Min and max of domestic tourist visits per province¶
# Calculating the min and max value for each feature
min_data = data.min()
max_data = data.max()
# Creating a min and max plot
plt.figure(figsize=(10, 6))
plt.plot(min_data, marker='o', color='red', label='Min')
plt.plot(max_data, marker='o', color='blue', label='Max')
plt.title('Min and Max Value of Domestic Tourist Visits per Province (January 2019 - June 2024))')
plt.xlabel('Province')
plt.ylabel('Trips (millions)')
plt.xticks(rotation=90)
plt.legend()
plt.grid(True)
plt.show()
Build model¶
Initialize variables¶
import warnings
from statsmodels.tsa.arima.model import ARIMA
from sklearn.metrics import mean_absolute_percentage_error
# Suppress ARIMA warnings
warnings.filterwarnings("ignore")
# List to store the predictions
all_provinces_predictions = pd.DataFrame()
# Initialize provinces
provinces = data.columns
# Define the prediction period
start = len(training_data)
end = len(training_data) + len(test_data) - 1
params = [(p, d, q) for p in range(5) for d in range(2) for q in range(5)]
params
[(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 0, 4), (0, 1, 0), (0, 1, 1), (0, 1, 2), (0, 1, 3), (0, 1, 4), (1, 0, 0), (1, 0, 1), (1, 0, 2), (1, 0, 3), (1, 0, 4), (1, 1, 0), (1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 1, 4), (2, 0, 0), (2, 0, 1), (2, 0, 2), (2, 0, 3), (2, 0, 4), (2, 1, 0), (2, 1, 1), (2, 1, 2), (2, 1, 3), (2, 1, 4), (3, 0, 0), (3, 0, 1), (3, 0, 2), (3, 0, 3), (3, 0, 4), (3, 1, 0), (3, 1, 1), (3, 1, 2), (3, 1, 3), (3, 1, 4), (4, 0, 0), (4, 0, 1), (4, 0, 2), (4, 0, 3), (4, 0, 4), (4, 1, 0), (4, 1, 1), (4, 1, 2), (4, 1, 3), (4, 1, 4)]
Function to implement model validation using grid search¶
def make_arima_prediction(train, test):
lowest_mape = float("inf")
best_param = None
best_prediction = None
for param in params:
arima = ARIMA(endog=train, order=param, seasonal_order=(1, 0, 0, 12))
arima = arima.fit()
prediction = arima.predict(start=start, end=end, typ="levels")
mape = mean_absolute_percentage_error(test, prediction) * 100
print(f'ARIMA{param}')
print(f'MAPE: {mape.round(2)}%')
print("=" * 50)
if mape < lowest_mape:
lowest_mape = mape
best_param = param
best_prediction = prediction
return best_param, lowest_mape, best_prediction
Function to make prediction vs actual plot¶
def plot_predictions_vs_actual(prediction_series, actual_series, xlabel="Time", ylabel="Values"):
# Check if the index of prediction_series is already a DatetimeIndex, if not, convert it
if isinstance(prediction_series.index, pd.PeriodIndex):
prediction_series.index = prediction_series.index.to_timestamp() # Converts PeriodIndex to DatetimeIndex
elif not isinstance(prediction_series.index, pd.DatetimeIndex):
prediction_series.index = pd.to_datetime(prediction_series.index) # If it's neither, convert it to DatetimeIndex
# Check if the index of actual_series is already a DatetimeIndex, if not, convert it
if isinstance(actual_series.index, pd.PeriodIndex):
actual_series.index = actual_series.index.to_timestamp() # Converts PeriodIndex to DatetimeIndex
elif not isinstance(actual_series.index, pd.DatetimeIndex):
actual_series.index = pd.to_datetime(actual_series.index) # If it's neither, convert it to DatetimeIndex
# Plot the data
plt.figure(figsize=(8, 4))
prediction_series.plot(legend=True, label='Predictions')
actual_series.plot(legend=True, label='Actual')
# Customize the plot
plt.title("Prediction vs Actual " + actual_series.name)
plt.xlabel(xlabel)
plt.ylabel(ylabel)
plt.show()
ACEH (1)¶
Split ACEH dataset¶
train_aceh = training_data["ACEH"]
test_aceh = test_data["ACEH"]
Make prediction for ACEH¶
best_param_aceh, lowest_mape_aceh, prediction_aceh = make_arima_prediction(train_aceh, test_aceh)
all_provinces_predictions['ACEH'] = prediction_aceh
ARIMA(0, 0, 0) MAPE: 31.72% ================================================== ARIMA(0, 0, 1) MAPE: 29.85% ================================================== ARIMA(0, 0, 2) MAPE: 31.31% ================================================== ARIMA(0, 0, 3) MAPE: 34.04% ================================================== ARIMA(0, 0, 4) MAPE: 35.36% ================================================== ARIMA(0, 1, 0) MAPE: 63.78% ================================================== ARIMA(0, 1, 1) MAPE: 25.57% ================================================== ARIMA(0, 1, 2) MAPE: 29.51% ================================================== ARIMA(0, 1, 3) MAPE: 27.93% ================================================== ARIMA(0, 1, 4) MAPE: 27.36% ================================================== ARIMA(1, 0, 0) MAPE: 24.83% ================================================== ARIMA(1, 0, 1) MAPE: 17.98% ================================================== ARIMA(1, 0, 2) MAPE: 25.41% ================================================== ARIMA(1, 0, 3) MAPE: 24.07% ================================================== ARIMA(1, 0, 4) MAPE: 24.81% ================================================== ARIMA(1, 1, 0) MAPE: 34.93% ================================================== ARIMA(1, 1, 1) MAPE: 34.34% ================================================== ARIMA(1, 1, 2) MAPE: 31.62% ================================================== ARIMA(1, 1, 3) MAPE: 27.82% ================================================== ARIMA(1, 1, 4) MAPE: 29.22% ================================================== ARIMA(2, 0, 0) MAPE: 19.23% ================================================== ARIMA(2, 0, 1) MAPE: 20.43% ================================================== ARIMA(2, 0, 2) MAPE: 24.43% ================================================== ARIMA(2, 0, 3) MAPE: 24.66% ================================================== ARIMA(2, 0, 4) MAPE: 25.88% ================================================== ARIMA(2, 1, 0) MAPE: 34.51% ================================================== ARIMA(2, 1, 1) MAPE: 19.29% ================================================== ARIMA(2, 1, 2) MAPE: 19.72% ================================================== ARIMA(2, 1, 3) MAPE: 26.49% ================================================== ARIMA(2, 1, 4) MAPE: 26.8% ================================================== ARIMA(3, 0, 0) MAPE: 21.51% ================================================== ARIMA(3, 0, 1) MAPE: 18.87% ================================================== ARIMA(3, 0, 2) MAPE: 28.05% ================================================== ARIMA(3, 0, 3) MAPE: 23.47% ================================================== ARIMA(3, 0, 4) MAPE: 26.06% ================================================== ARIMA(3, 1, 0) MAPE: 30.68% ================================================== ARIMA(3, 1, 1) MAPE: 26.84% ================================================== ARIMA(3, 1, 2) MAPE: 25.74% ================================================== ARIMA(3, 1, 3) MAPE: 29.82% ================================================== ARIMA(3, 1, 4) MAPE: 19.31% ================================================== ARIMA(4, 0, 0) MAPE: 22.81% ================================================== ARIMA(4, 0, 1) MAPE: 22.84% ================================================== ARIMA(4, 0, 2) MAPE: 23.72% ================================================== ARIMA(4, 0, 3) MAPE: 24.5% ================================================== ARIMA(4, 0, 4) MAPE: 20.35% ================================================== ARIMA(4, 1, 0) MAPE: 24.28% ================================================== ARIMA(4, 1, 1) MAPE: 24.6% ================================================== ARIMA(4, 1, 2) MAPE: 30.14% ================================================== ARIMA(4, 1, 3) MAPE: 20.71% ================================================== ARIMA(4, 1, 4) MAPE: 27.48% ==================================================
Best Parameter and lowest MAPE for ACEH¶
print("Best parameters model for ACEH:", best_param_aceh)
print(f"with the lowest MAPE: {lowest_mape_aceh.round(2)}%")
Best parameters model for ACEH: (1, 0, 1) with the lowest MAPE: 17.98%
Make prediction vs actual plot for ACEH¶
plot_predictions_vs_actual(prediction_series=prediction_aceh, actual_series=test_aceh)
SUMATERA UTARA (2)¶
Split SUMATERA UTARA dataset¶
train_sumatera_utara = training_data["SUMATERA UTARA"]
test_sumatera_utara = test_data["SUMATERA UTARA"]
Make prediction for SUMATERA UTARA¶
best_param_sumatera_utara, lowest_mape_sumatera_utara, prediction_sumatera_utara = make_arima_prediction(train_sumatera_utara, test_sumatera_utara)
all_provinces_predictions['SUMATERA UTARA'] = prediction_sumatera_utara
ARIMA(0, 0, 0) MAPE: 38.69% ================================================== ARIMA(0, 0, 1) MAPE: 34.8% ================================================== ARIMA(0, 0, 2) MAPE: 32.25% ================================================== ARIMA(0, 0, 3) MAPE: 26.67% ================================================== ARIMA(0, 0, 4) MAPE: 24.16% ================================================== ARIMA(0, 1, 0) MAPE: 8.83% ================================================== ARIMA(0, 1, 1) MAPE: 24.94% ================================================== ARIMA(0, 1, 2) MAPE: 25.7% ================================================== ARIMA(0, 1, 3) MAPE: 26.33% ================================================== ARIMA(0, 1, 4) MAPE: 26.27% ================================================== ARIMA(1, 0, 0) MAPE: 19.93% ================================================== ARIMA(1, 0, 1) MAPE: 21.37% ================================================== ARIMA(1, 0, 2) MAPE: 20.35% ================================================== ARIMA(1, 0, 3) MAPE: 19.35% ================================================== ARIMA(1, 0, 4) MAPE: 16.21% ================================================== ARIMA(1, 1, 0) MAPE: 18.04% ================================================== ARIMA(1, 1, 1) MAPE: 25.71% ================================================== ARIMA(1, 1, 2) MAPE: 28.63% ================================================== ARIMA(1, 1, 3) MAPE: 26.28% ================================================== ARIMA(1, 1, 4) MAPE: 25.57% ================================================== ARIMA(2, 0, 0) MAPE: 20.02% ================================================== ARIMA(2, 0, 1) MAPE: 20.85% ================================================== ARIMA(2, 0, 2) MAPE: 20.22% ================================================== ARIMA(2, 0, 3) MAPE: 19.41% ================================================== ARIMA(2, 0, 4) MAPE: 16.6% ================================================== ARIMA(2, 1, 0) MAPE: 21.3% ================================================== ARIMA(2, 1, 1) MAPE: 27.88% ================================================== ARIMA(2, 1, 2) MAPE: 28.6% ================================================== ARIMA(2, 1, 3) MAPE: 32.95% ================================================== ARIMA(2, 1, 4) MAPE: 28.26% ================================================== ARIMA(3, 0, 0) MAPE: 20.52% ================================================== ARIMA(3, 0, 1) MAPE: 20.46% ================================================== ARIMA(3, 0, 2) MAPE: 18.79% ================================================== ARIMA(3, 0, 3) MAPE: 18.21% ================================================== ARIMA(3, 0, 4) MAPE: 18.52% ================================================== ARIMA(3, 1, 0) MAPE: 23.59% ================================================== ARIMA(3, 1, 1) MAPE: 26.28% ================================================== ARIMA(3, 1, 2) MAPE: 30.33% ================================================== ARIMA(3, 1, 3) MAPE: 28.92% ================================================== ARIMA(3, 1, 4) MAPE: 28.21% ================================================== ARIMA(4, 0, 0) MAPE: 20.28% ================================================== ARIMA(4, 0, 1) MAPE: 20.06% ================================================== ARIMA(4, 0, 2) MAPE: 18.78% ================================================== ARIMA(4, 0, 3) MAPE: 18.96% ================================================== ARIMA(4, 0, 4) MAPE: 24.05% ================================================== ARIMA(4, 1, 0) MAPE: 28.88% ================================================== ARIMA(4, 1, 1) MAPE: 28.43% ================================================== ARIMA(4, 1, 2) MAPE: 27.69% ================================================== ARIMA(4, 1, 3) MAPE: 30.84% ================================================== ARIMA(4, 1, 4) MAPE: 31.89% ==================================================
Best parameter and lowest MAPE for SUMATERA UTARA¶
print(f"Best parameters model for SUMATERA UTARA:", best_param_sumatera_utara)
print(f"with the lowest MAPE: {lowest_mape_sumatera_utara.round(2)}%")
Best parameters model for SUMATERA UTARA: (0, 1, 0) with the lowest MAPE: 8.83%
Make prediction vs actual plot for SUMATERA UTARA¶
plot_predictions_vs_actual(prediction_series=prediction_sumatera_utara, actual_series=test_sumatera_utara)
SUMATERA BARAT (3)¶
Split SUMATERA BARAT dataset¶
train_sumatera_barat = training_data["SUMATERA BARAT"]
test_sumatera_barat = test_data["SUMATERA BARAT"]
Make prediction for SUMATERA BARAT¶
best_param_sumatera_barat, lowest_mape_sumatera_barat, prediction_sumatera_barat = make_arima_prediction(train_sumatera_barat, test_sumatera_barat)
all_provinces_predictions['SUMATERA BARAT'] = prediction_sumatera_barat
ARIMA(0, 0, 0) MAPE: 32.42% ================================================== ARIMA(0, 0, 1) MAPE: 28.37% ================================================== ARIMA(0, 0, 2) MAPE: 26.88% ================================================== ARIMA(0, 0, 3) MAPE: 22.88% ================================================== ARIMA(0, 0, 4) MAPE: 22.89% ================================================== ARIMA(0, 1, 0) MAPE: 15.39% ================================================== ARIMA(0, 1, 1) MAPE: 24.71% ================================================== ARIMA(0, 1, 2) MAPE: 24.37% ================================================== ARIMA(0, 1, 3) MAPE: 24.68% ================================================== ARIMA(0, 1, 4) MAPE: 32.46% ================================================== ARIMA(1, 0, 0) MAPE: 22.94% ================================================== ARIMA(1, 0, 1) MAPE: 22.34% ================================================== ARIMA(1, 0, 2) MAPE: 21.16% ================================================== ARIMA(1, 0, 3) MAPE: 22.98% ================================================== ARIMA(1, 0, 4) MAPE: 20.31% ================================================== ARIMA(1, 1, 0) MAPE: 20.33% ================================================== ARIMA(1, 1, 1) MAPE: 23.38% ================================================== ARIMA(1, 1, 2) MAPE: 29.98% ================================================== ARIMA(1, 1, 3) MAPE: 30.07% ================================================== ARIMA(1, 1, 4) MAPE: 32.83% ================================================== ARIMA(2, 0, 0) MAPE: 22.5% ================================================== ARIMA(2, 0, 1) MAPE: 21.9% ================================================== ARIMA(2, 0, 2) MAPE: 21.38% ================================================== ARIMA(2, 0, 3) MAPE: 23.11% ================================================== ARIMA(2, 0, 4) MAPE: 20.4% ================================================== ARIMA(2, 1, 0) MAPE: 21.71% ================================================== ARIMA(2, 1, 1) MAPE: 29.79% ================================================== ARIMA(2, 1, 2) MAPE: 30.59% ================================================== ARIMA(2, 1, 3) MAPE: 22.57% ================================================== ARIMA(2, 1, 4) MAPE: 33.51% ================================================== ARIMA(3, 0, 0) MAPE: 22.5% ================================================== ARIMA(3, 0, 1) MAPE: 22.51% ================================================== ARIMA(3, 0, 2) MAPE: 22.49% ================================================== ARIMA(3, 0, 3) MAPE: 20.63% ================================================== ARIMA(3, 0, 4) MAPE: 17.39% ================================================== ARIMA(3, 1, 0) MAPE: 23.18% ================================================== ARIMA(3, 1, 1) MAPE: 29.79% ================================================== ARIMA(3, 1, 2) MAPE: 35.26% ================================================== ARIMA(3, 1, 3) MAPE: 28.52% ================================================== ARIMA(3, 1, 4) MAPE: 31.28% ================================================== ARIMA(4, 0, 0) MAPE: 22.49% ================================================== ARIMA(4, 0, 1) MAPE: 22.58% ================================================== ARIMA(4, 0, 2) MAPE: 21.99% ================================================== ARIMA(4, 0, 3) MAPE: 20.91% ================================================== ARIMA(4, 0, 4) MAPE: 17.71% ================================================== ARIMA(4, 1, 0) MAPE: 27.0% ================================================== ARIMA(4, 1, 1) MAPE: 27.29% ================================================== ARIMA(4, 1, 2) MAPE: 28.01% ================================================== ARIMA(4, 1, 3) MAPE: 25.6% ================================================== ARIMA(4, 1, 4) MAPE: 46.3% ==================================================
Best parameter and lowest MAPE for SUMATERA BARAT¶
print(f"Best parameters model for SUMATERA BARAT:", best_param_sumatera_barat)
print(f"with the lowest MAPE: {lowest_mape_sumatera_barat.round(2)}%")
Best parameters model for SUMATERA BARAT: (0, 1, 0) with the lowest MAPE: 15.39%
Make prediction vs actual plot for SUMATERA BARAT¶
plot_predictions_vs_actual(prediction_series=prediction_sumatera_barat, actual_series=test_sumatera_barat)
RIAU (4)¶
Split RIAU dataset¶
train_riau = training_data["RIAU"]
test_riau = test_data["RIAU"]
Make prediction for RIAU¶
best_param_riau, lowest_mape_riau, prediction_riau = make_arima_prediction(train_riau, test_riau)
all_provinces_predictions['RIAU'] = prediction_riau
ARIMA(0, 0, 0) MAPE: 46.17% ================================================== ARIMA(0, 0, 1) MAPE: 41.99% ================================================== ARIMA(0, 0, 2) MAPE: 40.12% ================================================== ARIMA(0, 0, 3) MAPE: 34.34% ================================================== ARIMA(0, 0, 4) MAPE: 32.11% ================================================== ARIMA(0, 1, 0) MAPE: 12.32% ================================================== ARIMA(0, 1, 1) MAPE: 27.87% ================================================== ARIMA(0, 1, 2) MAPE: 28.48% ================================================== ARIMA(0, 1, 3) MAPE: 28.91% ================================================== ARIMA(0, 1, 4) MAPE: 28.92% ================================================== ARIMA(1, 0, 0) MAPE: 24.52% ================================================== ARIMA(1, 0, 1) MAPE: 26.53% ================================================== ARIMA(1, 0, 2) MAPE: 25.97% ================================================== ARIMA(1, 0, 3) MAPE: 24.41% ================================================== ARIMA(1, 0, 4) MAPE: 20.2% ================================================== ARIMA(1, 1, 0) MAPE: 22.74% ================================================== ARIMA(1, 1, 1) MAPE: 28.46% ================================================== ARIMA(1, 1, 2) MAPE: 28.59% ================================================== ARIMA(1, 1, 3) MAPE: 28.9% ================================================== ARIMA(1, 1, 4) MAPE: 28.13% ================================================== ARIMA(2, 0, 0) MAPE: 25.51% ================================================== ARIMA(2, 0, 1) MAPE: 26.51% ================================================== ARIMA(2, 0, 2) MAPE: 25.92% ================================================== ARIMA(2, 0, 3) MAPE: 24.65% ================================================== ARIMA(2, 0, 4) MAPE: 20.57% ================================================== ARIMA(2, 1, 0) MAPE: 25.03% ================================================== ARIMA(2, 1, 1) MAPE: 28.4% ================================================== ARIMA(2, 1, 2) MAPE: 30.21% ================================================== ARIMA(2, 1, 3) MAPE: 25.48% ================================================== ARIMA(2, 1, 4) MAPE: 25.89% ================================================== ARIMA(3, 0, 0) MAPE: 25.87% ================================================== ARIMA(3, 0, 1) MAPE: 25.79% ================================================== ARIMA(3, 0, 2) MAPE: 23.74% ================================================== ARIMA(3, 0, 3) MAPE: 22.82% ================================================== ARIMA(3, 0, 4) MAPE: 20.9% ================================================== ARIMA(3, 1, 0) MAPE: 26.93% ================================================== ARIMA(3, 1, 1) MAPE: 28.94% ================================================== ARIMA(3, 1, 2) MAPE: 30.59% ================================================== ARIMA(3, 1, 3) MAPE: 25.72% ================================================== ARIMA(3, 1, 4) MAPE: 25.7% ================================================== ARIMA(4, 0, 0) MAPE: 26.16% ================================================== ARIMA(4, 0, 1) MAPE: 25.87% ================================================== ARIMA(4, 0, 2) MAPE: 23.88% ================================================== ARIMA(4, 0, 3) MAPE: 22.95% ================================================== ARIMA(4, 0, 4) MAPE: 20.23% ================================================== ARIMA(4, 1, 0) MAPE: 30.6% ================================================== ARIMA(4, 1, 1) MAPE: 30.39% ================================================== ARIMA(4, 1, 2) MAPE: 29.6% ================================================== ARIMA(4, 1, 3) MAPE: 31.72% ================================================== ARIMA(4, 1, 4) MAPE: 29.55% ==================================================
Best parameter and lowest MAPE for RIAU¶
print(f"Best parameters model for RIAU:", best_param_riau)
print(f"with the lowest MAPE: {lowest_mape_riau.round(2)}%")
Best parameters model for RIAU: (0, 1, 0) with the lowest MAPE: 12.32%
Make prediction vs actual plot for RIAU¶
plot_predictions_vs_actual(prediction_series=prediction_riau, actual_series=test_riau)
JAMBI (5)¶
Split JAMBI dataset¶
train_jambi = training_data["JAMBI"]
test_jambi = test_data["JAMBI"]
Make prediction for JAMBI¶
best_param_jambi, lowest_mape_jambi, prediction_jambi = make_arima_prediction(train_jambi, test_jambi)
all_provinces_predictions['JAMBI'] = prediction_jambi
ARIMA(0, 0, 0) MAPE: 47.03% ================================================== ARIMA(0, 0, 1) MAPE: 42.94% ================================================== ARIMA(0, 0, 2) MAPE: 40.26% ================================================== ARIMA(0, 0, 3) MAPE: 35.99% ================================================== ARIMA(0, 0, 4) MAPE: 26.71% ================================================== ARIMA(0, 1, 0) MAPE: 11.05% ================================================== ARIMA(0, 1, 1) MAPE: 20.69% ================================================== ARIMA(0, 1, 2) MAPE: 21.47% ================================================== ARIMA(0, 1, 3) MAPE: 24.61% ================================================== ARIMA(0, 1, 4) MAPE: 25.08% ================================================== ARIMA(1, 0, 0) MAPE: 17.98% ================================================== ARIMA(1, 0, 1) MAPE: 19.96% ================================================== ARIMA(1, 0, 2) MAPE: 16.1% ================================================== ARIMA(1, 0, 3) MAPE: 11.94% ================================================== ARIMA(1, 0, 4) MAPE: 11.03% ================================================== ARIMA(1, 1, 0) MAPE: 17.99% ================================================== ARIMA(1, 1, 1) MAPE: 24.7% ================================================== ARIMA(1, 1, 2) MAPE: 29.9% ================================================== ARIMA(1, 1, 3) MAPE: 25.07% ================================================== ARIMA(1, 1, 4) MAPE: 24.22% ================================================== ARIMA(2, 0, 0) MAPE: 19.71% ================================================== ARIMA(2, 0, 1) MAPE: 19.63% ================================================== ARIMA(2, 0, 2) MAPE: 14.06% ================================================== ARIMA(2, 0, 3) MAPE: 12.21% ================================================== ARIMA(2, 0, 4) MAPE: 9.94% ================================================== ARIMA(2, 1, 0) MAPE: 18.3% ================================================== ARIMA(2, 1, 1) MAPE: 29.92% ================================================== ARIMA(2, 1, 2) MAPE: 30.07% ================================================== ARIMA(2, 1, 3) MAPE: 25.57% ================================================== ARIMA(2, 1, 4) MAPE: 24.2% ================================================== ARIMA(3, 0, 0) MAPE: 19.46% ================================================== ARIMA(3, 0, 1) MAPE: 20.03% ================================================== ARIMA(3, 0, 2) MAPE: 17.72% ================================================== ARIMA(3, 0, 3) MAPE: 13.08% ================================================== ARIMA(3, 0, 4) MAPE: 13.55% ================================================== ARIMA(3, 1, 0) MAPE: 20.44% ================================================== ARIMA(3, 1, 1) MAPE: 24.68% ================================================== ARIMA(3, 1, 2) MAPE: 22.01% ================================================== ARIMA(3, 1, 3) MAPE: 31.47% ================================================== ARIMA(3, 1, 4) MAPE: 30.94% ================================================== ARIMA(4, 0, 0) MAPE: 15.84% ================================================== ARIMA(4, 0, 1) MAPE: 15.72% ================================================== ARIMA(4, 0, 2) MAPE: 18.62% ================================================== ARIMA(4, 0, 3) MAPE: 11.91% ================================================== ARIMA(4, 0, 4) MAPE: 12.36% ================================================== ARIMA(4, 1, 0) MAPE: 24.73% ================================================== ARIMA(4, 1, 1) MAPE: 23.17% ================================================== ARIMA(4, 1, 2) MAPE: 23.77% ================================================== ARIMA(4, 1, 3) MAPE: 22.66% ================================================== ARIMA(4, 1, 4) MAPE: 22.55% ==================================================
Best parameter and lowest MAPE for JAMBI¶
print(f"Best parameters model for JAMBI:", best_param_jambi)
print(f"with the lowest MAPE: {lowest_mape_jambi.round(2)}%")
Best parameters model for JAMBI: (2, 0, 4) with the lowest MAPE: 9.94%
Make prediction vs actual plot for JAMBI¶
plot_predictions_vs_actual(prediction_series=prediction_jambi, actual_series=test_jambi)
SUMATERA SELATAN (6)¶
Split SUMATERA SELATAN dataset¶
train_sumatera_selatan = training_data["SUMATERA SELATAN"]
test_sumatera_selatan = test_data["SUMATERA SELATAN"]
Make prediction for SUMATERA SELATAN¶
best_param_sumatera_selatan, lowest_mape_sumatera_selatan, prediction_sumatera_selatan = make_arima_prediction(train_sumatera_selatan, test_sumatera_selatan)
all_provinces_predictions['SUMATERA SELATAN'] = prediction_sumatera_selatan
ARIMA(0, 0, 0) MAPE: 44.74% ================================================== ARIMA(0, 0, 1) MAPE: 40.39% ================================================== ARIMA(0, 0, 2) MAPE: 36.49% ================================================== ARIMA(0, 0, 3) MAPE: 32.39% ================================================== ARIMA(0, 0, 4) MAPE: 28.48% ================================================== ARIMA(0, 1, 0) MAPE: 8.02% ================================================== ARIMA(0, 1, 1) MAPE: 20.94% ================================================== ARIMA(0, 1, 2) MAPE: 19.82% ================================================== ARIMA(0, 1, 3) MAPE: 22.69% ================================================== ARIMA(0, 1, 4) MAPE: 22.88% ================================================== ARIMA(1, 0, 0) MAPE: 16.92% ================================================== ARIMA(1, 0, 1) MAPE: 18.3% ================================================== ARIMA(1, 0, 2) MAPE: 14.85% ================================================== ARIMA(1, 0, 3) MAPE: 14.94% ================================================== ARIMA(1, 0, 4) MAPE: 13.96% ================================================== ARIMA(1, 1, 0) MAPE: 16.67% ================================================== ARIMA(1, 1, 1) MAPE: 17.83% ================================================== ARIMA(1, 1, 2) MAPE: 19.01% ================================================== ARIMA(1, 1, 3) MAPE: 23.0% ================================================== ARIMA(1, 1, 4) MAPE: 28.98% ================================================== ARIMA(2, 0, 0) MAPE: 18.2% ================================================== ARIMA(2, 0, 1) MAPE: 17.97% ================================================== ARIMA(2, 0, 2) MAPE: 15.18% ================================================== ARIMA(2, 0, 3) MAPE: 14.34% ================================================== ARIMA(2, 0, 4) MAPE: 13.65% ================================================== ARIMA(2, 1, 0) MAPE: 17.31% ================================================== ARIMA(2, 1, 1) MAPE: 28.55% ================================================== ARIMA(2, 1, 2) MAPE: 29.13% ================================================== ARIMA(2, 1, 3) MAPE: 23.66% ================================================== ARIMA(2, 1, 4) MAPE: 28.97% ================================================== ARIMA(3, 0, 0) MAPE: 17.57% ================================================== ARIMA(3, 0, 1) MAPE: 16.89% ================================================== ARIMA(3, 0, 2) MAPE: 15.26% ================================================== ARIMA(3, 0, 3) MAPE: 14.97% ================================================== ARIMA(3, 0, 4) MAPE: 11.65% ================================================== ARIMA(3, 1, 0) MAPE: 18.61% ================================================== ARIMA(3, 1, 1) MAPE: 28.77% ================================================== ARIMA(3, 1, 2) MAPE: 27.76% ================================================== ARIMA(3, 1, 3) MAPE: 28.42% ================================================== ARIMA(3, 1, 4) MAPE: 29.34% ================================================== ARIMA(4, 0, 0) MAPE: 16.44% ================================================== ARIMA(4, 0, 1) MAPE: 16.46% ================================================== ARIMA(4, 0, 2) MAPE: 15.79% ================================================== ARIMA(4, 0, 3) MAPE: 14.99% ================================================== ARIMA(4, 0, 4) MAPE: 11.81% ================================================== ARIMA(4, 1, 0) MAPE: 21.23% ================================================== ARIMA(4, 1, 1) MAPE: 19.89% ================================================== ARIMA(4, 1, 2) MAPE: 28.21% ================================================== ARIMA(4, 1, 3) MAPE: 28.21% ================================================== ARIMA(4, 1, 4) MAPE: 29.56% ==================================================
Best parameter and lowest MAPE for SUMATERA SELATAN¶
print(f"Best parameters model for SUMATERA SELATAN:", best_param_sumatera_selatan)
print(f"with the lowest MAPE: {lowest_mape_sumatera_selatan.round(2)}%")
Best parameters model for SUMATERA SELATAN: (0, 1, 0) with the lowest MAPE: 8.02%
Make prediction vs actual plot for SUMATERA SELATAN¶
plot_predictions_vs_actual(prediction_series=prediction_sumatera_selatan, actual_series=test_sumatera_selatan)
BENGKULU (7)¶
Split BENGKULU dataset¶
train_bengkulu = training_data["BENGKULU"]
test_bengkulu = test_data["BENGKULU"]
Make prediction for BENGKULU¶
best_param_bengkulu, lowest_mape_bengkulu, prediction_bengkulu = make_arima_prediction(train_bengkulu, test_bengkulu)
all_provinces_predictions['BENGKULU'] = prediction_bengkulu
ARIMA(0, 0, 0) MAPE: 40.26% ================================================== ARIMA(0, 0, 1) MAPE: 37.81% ================================================== ARIMA(0, 0, 2) MAPE: 39.3% ================================================== ARIMA(0, 0, 3) MAPE: 37.07% ================================================== ARIMA(0, 0, 4) MAPE: 42.27% ================================================== ARIMA(0, 1, 0) MAPE: 94.69% ================================================== ARIMA(0, 1, 1) MAPE: 38.84% ================================================== ARIMA(0, 1, 2) MAPE: 42.66% ================================================== ARIMA(0, 1, 3) MAPE: 37.43% ================================================== ARIMA(0, 1, 4) MAPE: 37.51% ================================================== ARIMA(1, 0, 0) MAPE: 33.13% ================================================== ARIMA(1, 0, 1) MAPE: 25.21% ================================================== ARIMA(1, 0, 2) MAPE: 32.4% ================================================== ARIMA(1, 0, 3) MAPE: 31.8% ================================================== ARIMA(1, 0, 4) MAPE: 32.89% ================================================== ARIMA(1, 1, 0) MAPE: 55.71% ================================================== ARIMA(1, 1, 1) MAPE: 45.13% ================================================== ARIMA(1, 1, 2) MAPE: 43.71% ================================================== ARIMA(1, 1, 3) MAPE: 37.33% ================================================== ARIMA(1, 1, 4) MAPE: 42.28% ================================================== ARIMA(2, 0, 0) MAPE: 26.78% ================================================== ARIMA(2, 0, 1) MAPE: 26.17% ================================================== ARIMA(2, 0, 2) MAPE: 32.28% ================================================== ARIMA(2, 0, 3) MAPE: 33.45% ================================================== ARIMA(2, 0, 4) MAPE: 33.56% ================================================== ARIMA(2, 1, 0) MAPE: 49.2% ================================================== ARIMA(2, 1, 1) MAPE: 53.58% ================================================== ARIMA(2, 1, 2) MAPE: 31.33% ================================================== ARIMA(2, 1, 3) MAPE: 42.63% ================================================== ARIMA(2, 1, 4) MAPE: 44.08% ================================================== ARIMA(3, 0, 0) MAPE: 26.02% ================================================== ARIMA(3, 0, 1) MAPE: 26.21% ================================================== ARIMA(3, 0, 2) MAPE: 40.11% ================================================== ARIMA(3, 0, 3) MAPE: 34.08% ================================================== ARIMA(3, 0, 4) MAPE: 34.65% ================================================== ARIMA(3, 1, 0) MAPE: 48.48% ================================================== ARIMA(3, 1, 1) MAPE: 31.04% ================================================== ARIMA(3, 1, 2) MAPE: 33.73% ================================================== ARIMA(3, 1, 3) MAPE: 33.81% ================================================== ARIMA(3, 1, 4) MAPE: 39.57% ================================================== ARIMA(4, 0, 0) MAPE: 35.08% ================================================== ARIMA(4, 0, 1) MAPE: 34.83% ================================================== ARIMA(4, 0, 2) MAPE: 37.49% ================================================== ARIMA(4, 0, 3) MAPE: 37.33% ================================================== ARIMA(4, 0, 4) MAPE: 24.55% ================================================== ARIMA(4, 1, 0) MAPE: 40.19% ================================================== ARIMA(4, 1, 1) MAPE: 42.53% ================================================== ARIMA(4, 1, 2) MAPE: 37.99% ================================================== ARIMA(4, 1, 3) MAPE: 34.46% ================================================== ARIMA(4, 1, 4) MAPE: 55.06% ==================================================
Best parameter and lowest MAPE for BENGKULU¶
print(f"Best parameters model for BENGKULU:", best_param_bengkulu)
print(f"with the lowest MAPE: {lowest_mape_bengkulu.round(2)}%")
Best parameters model for BENGKULU: (4, 0, 4) with the lowest MAPE: 24.55%
Make prediction vs actual plot for BENGKULU¶
plot_predictions_vs_actual(prediction_series=prediction_bengkulu, actual_series=test_bengkulu)
LAMPUNG (8)¶
Split LAMPUNG dataset¶
train_lampung = training_data["LAMPUNG"]
test_lampung = test_data["LAMPUNG"]
Make prediction for LAMPUNG¶
best_param_lampung, lowest_mape_lampung, prediction_lampung = make_arima_prediction(train_lampung, test_lampung)
all_provinces_predictions['LAMPUNG'] = prediction_lampung
ARIMA(0, 0, 0) MAPE: 32.95% ================================================== ARIMA(0, 0, 1) MAPE: 29.31% ================================================== ARIMA(0, 0, 2) MAPE: 26.04% ================================================== ARIMA(0, 0, 3) MAPE: 21.64% ================================================== ARIMA(0, 0, 4) MAPE: 17.25% ================================================== ARIMA(0, 1, 0) MAPE: 10.66% ================================================== ARIMA(0, 1, 1) MAPE: 18.24% ================================================== ARIMA(0, 1, 2) MAPE: 19.87% ================================================== ARIMA(0, 1, 3) MAPE: 20.39% ================================================== ARIMA(0, 1, 4) MAPE: 20.5% ================================================== ARIMA(1, 0, 0) MAPE: 15.77% ================================================== ARIMA(1, 0, 1) MAPE: 12.17% ================================================== ARIMA(1, 0, 2) MAPE: 10.53% ================================================== ARIMA(1, 0, 3) MAPE: 10.42% ================================================== ARIMA(1, 0, 4) MAPE: 8.54% ================================================== ARIMA(1, 1, 0) MAPE: 13.83% ================================================== ARIMA(1, 1, 1) MAPE: 20.05% ================================================== ARIMA(1, 1, 2) MAPE: 26.26% ================================================== ARIMA(1, 1, 3) MAPE: 20.39% ================================================== ARIMA(1, 1, 4) MAPE: 19.78% ================================================== ARIMA(2, 0, 0) MAPE: 11.71% ================================================== ARIMA(2, 0, 1) MAPE: 11.83% ================================================== ARIMA(2, 0, 2) MAPE: 10.68% ================================================== ARIMA(2, 0, 3) MAPE: 9.96% ================================================== ARIMA(2, 0, 4) MAPE: 8.43% ================================================== ARIMA(2, 1, 0) MAPE: 14.1% ================================================== ARIMA(2, 1, 1) MAPE: 26.41% ================================================== ARIMA(2, 1, 2) MAPE: 27.08% ================================================== ARIMA(2, 1, 3) MAPE: 25.5% ================================================== ARIMA(2, 1, 4) MAPE: 19.63% ================================================== ARIMA(3, 0, 0) MAPE: 11.78% ================================================== ARIMA(3, 0, 1) MAPE: 11.8% ================================================== ARIMA(3, 0, 2) MAPE: 10.5% ================================================== ARIMA(3, 0, 3) MAPE: 10.99% ================================================== ARIMA(3, 0, 4) MAPE: 8.73% ================================================== ARIMA(3, 1, 0) MAPE: 14.66% ================================================== ARIMA(3, 1, 1) MAPE: 19.6% ================================================== ARIMA(3, 1, 2) MAPE: 19.43% ================================================== ARIMA(3, 1, 3) MAPE: 26.06% ================================================== ARIMA(3, 1, 4) MAPE: 26.22% ================================================== ARIMA(4, 0, 0) MAPE: 11.4% ================================================== ARIMA(4, 0, 1) MAPE: 11.39% ================================================== ARIMA(4, 0, 2) MAPE: 10.52% ================================================== ARIMA(4, 0, 3) MAPE: 9.87% ================================================== ARIMA(4, 0, 4) MAPE: 9.09% ================================================== ARIMA(4, 1, 0) MAPE: 19.52% ================================================== ARIMA(4, 1, 1) MAPE: 18.39% ================================================== ARIMA(4, 1, 2) MAPE: 18.62% ================================================== ARIMA(4, 1, 3) MAPE: 24.98% ================================================== ARIMA(4, 1, 4) MAPE: 23.23% ==================================================
Best parameter and lowest MAPE for BENGKULU¶
print(f"Best parameters model for LAMPUNG:", best_param_lampung)
print(f"with the lowest MAPE: {lowest_mape_lampung.round(2)}%")
Best parameters model for LAMPUNG: (2, 0, 4) with the lowest MAPE: 8.43%
Make prediction vs actual plot for BENGKULU¶
plot_predictions_vs_actual(prediction_series=prediction_lampung, actual_series=test_lampung)
KEP. BANGKA BELITUNG (9)¶
Split KEP. BANGKA BELITUNG dataset¶
train_kep_bangka_belitung = training_data["KEP. BANGKA BELITUNG"]
test_kep_bangka_belitung = test_data["KEP. BANGKA BELITUNG"]
Make prediction for KEP. BANGKA BELITUNG¶
best_param_kep_bangka_belitung, lowest_mape_kep_bangka_belitung, prediction_kep_bangka_belitung = make_arima_prediction(train_kep_bangka_belitung, test_kep_bangka_belitung)
all_provinces_predictions['KEP. BANGKA BELITUNG'] = prediction_kep_bangka_belitung
ARIMA(0, 0, 0) MAPE: 41.76% ================================================== ARIMA(0, 0, 1) MAPE: 37.51% ================================================== ARIMA(0, 0, 2) MAPE: 34.98% ================================================== ARIMA(0, 0, 3) MAPE: 27.72% ================================================== ARIMA(0, 0, 4) MAPE: 32.43% ================================================== ARIMA(0, 1, 0) MAPE: 62.56% ================================================== ARIMA(0, 1, 1) MAPE: 31.19% ================================================== ARIMA(0, 1, 2) MAPE: 21.67% ================================================== ARIMA(0, 1, 3) MAPE: 24.01% ================================================== ARIMA(0, 1, 4) MAPE: 27.58% ================================================== ARIMA(1, 0, 0) MAPE: 30.92% ================================================== ARIMA(1, 0, 1) MAPE: 22.47% ================================================== ARIMA(1, 0, 2) MAPE: 28.55% ================================================== ARIMA(1, 0, 3) MAPE: 23.16% ================================================== ARIMA(1, 0, 4) MAPE: 25.69% ================================================== ARIMA(1, 1, 0) MAPE: 39.25% ================================================== ARIMA(1, 1, 1) MAPE: 40.44% ================================================== ARIMA(1, 1, 2) MAPE: 20.98% ================================================== ARIMA(1, 1, 3) MAPE: 25.58% ================================================== ARIMA(1, 1, 4) MAPE: 31.37% ================================================== ARIMA(2, 0, 0) MAPE: 22.94% ================================================== ARIMA(2, 0, 1) MAPE: 23.47% ================================================== ARIMA(2, 0, 2) MAPE: 26.95% ================================================== ARIMA(2, 0, 3) MAPE: 23.78% ================================================== ARIMA(2, 0, 4) MAPE: 33.48% ================================================== ARIMA(2, 1, 0) MAPE: 39.74% ================================================== ARIMA(2, 1, 1) MAPE: 21.1% ================================================== ARIMA(2, 1, 2) MAPE: 21.38% ================================================== ARIMA(2, 1, 3) MAPE: 26.32% ================================================== ARIMA(2, 1, 4) MAPE: 30.91% ================================================== ARIMA(3, 0, 0) MAPE: 24.16% ================================================== ARIMA(3, 0, 1) MAPE: 24.19% ================================================== ARIMA(3, 0, 2) MAPE: 31.43% ================================================== ARIMA(3, 0, 3) MAPE: 27.04% ================================================== ARIMA(3, 0, 4) MAPE: 28.0% ================================================== ARIMA(3, 1, 0) MAPE: 34.36% ================================================== ARIMA(3, 1, 1) MAPE: 22.28% ================================================== ARIMA(3, 1, 2) MAPE: 23.7% ================================================== ARIMA(3, 1, 3) MAPE: 24.2% ================================================== ARIMA(3, 1, 4) MAPE: 30.87% ================================================== ARIMA(4, 0, 0) MAPE: 24.76% ================================================== ARIMA(4, 0, 1) MAPE: 25.35% ================================================== ARIMA(4, 0, 2) MAPE: 28.0% ================================================== ARIMA(4, 0, 3) MAPE: 26.66% ================================================== ARIMA(4, 0, 4) MAPE: 26.69% ================================================== ARIMA(4, 1, 0) MAPE: 27.7% ================================================== ARIMA(4, 1, 1) MAPE: 28.13% ================================================== ARIMA(4, 1, 2) MAPE: 25.94% ================================================== ARIMA(4, 1, 3) MAPE: 27.13% ================================================== ARIMA(4, 1, 4) MAPE: 29.16% ==================================================
Best parameter and lowest MAPE for KEP. BANGKA BELITUNG¶
print(f"Best parameters model for KEP. BANGKA BELITUNG:", best_param_kep_bangka_belitung)
print(f"with the lowest MAPE: {lowest_mape_kep_bangka_belitung.round(2)}%")
Best parameters model for KEP. BANGKA BELITUNG: (1, 1, 2) with the lowest MAPE: 20.98%
Make prediction vs actual plot for KEP. BANGKE BELITUNG¶
plot_predictions_vs_actual(prediction_series=prediction_kep_bangka_belitung, actual_series=test_kep_bangka_belitung)
KEP. RIAU (10)¶
Split KEP. RIAU dataset¶
train_kep_riau = training_data["KEP. RIAU"]
test_kep_riau = test_data["KEP. RIAU"]
Make prediction for KEP. RIAU¶
best_param_kep_riau, lowest_mape_kep_riau, prediction_kep_riau = make_arima_prediction(train_kep_riau, test_kep_riau)
all_provinces_predictions['KEP. RIAU'] = prediction_kep_riau
ARIMA(0, 0, 0) MAPE: 44.38% ================================================== ARIMA(0, 0, 1) MAPE: 37.92% ================================================== ARIMA(0, 0, 2) MAPE: 34.67% ================================================== ARIMA(0, 0, 3) MAPE: 27.0% ================================================== ARIMA(0, 0, 4) MAPE: 24.73% ================================================== ARIMA(0, 1, 0) MAPE: 6.31% ================================================== ARIMA(0, 1, 1) MAPE: 9.03% ================================================== ARIMA(0, 1, 2) MAPE: 11.03% ================================================== ARIMA(0, 1, 3) MAPE: 11.78% ================================================== ARIMA(0, 1, 4) MAPE: 11.79% ================================================== ARIMA(1, 0, 0) MAPE: 11.45% ================================================== ARIMA(1, 0, 1) MAPE: 13.15% ================================================== ARIMA(1, 0, 2) MAPE: 13.36% ================================================== ARIMA(1, 0, 3) MAPE: 13.39% ================================================== ARIMA(1, 0, 4) MAPE: 12.3% ================================================== ARIMA(1, 1, 0) MAPE: 7.43% ================================================== ARIMA(1, 1, 1) MAPE: 11.23% ================================================== ARIMA(1, 1, 2) MAPE: 11.28% ================================================== ARIMA(1, 1, 3) MAPE: 11.78% ================================================== ARIMA(1, 1, 4) MAPE: 11.48% ================================================== ARIMA(2, 0, 0) MAPE: 12.93% ================================================== ARIMA(2, 0, 1) MAPE: 13.44% ================================================== ARIMA(2, 0, 2) MAPE: 13.15% ================================================== ARIMA(2, 0, 3) MAPE: 15.46% ================================================== ARIMA(2, 0, 4) MAPE: 12.42% ================================================== ARIMA(2, 1, 0) MAPE: 8.58% ================================================== ARIMA(2, 1, 1) MAPE: 11.23% ================================================== ARIMA(2, 1, 2) MAPE: 11.07% ================================================== ARIMA(2, 1, 3) MAPE: 10.75% ================================================== ARIMA(2, 1, 4) MAPE: 13.69% ================================================== ARIMA(3, 0, 0) MAPE: 13.0% ================================================== ARIMA(3, 0, 1) MAPE: 12.95% ================================================== ARIMA(3, 0, 2) MAPE: 12.93% ================================================== ARIMA(3, 0, 3) MAPE: 12.28% ================================================== ARIMA(3, 0, 4) MAPE: 13.83% ================================================== ARIMA(3, 1, 0) MAPE: 10.84% ================================================== ARIMA(3, 1, 1) MAPE: 12.25% ================================================== ARIMA(3, 1, 2) MAPE: 13.97% ================================================== ARIMA(3, 1, 3) MAPE: 10.87% ================================================== ARIMA(3, 1, 4) MAPE: 10.37% ================================================== ARIMA(4, 0, 0) MAPE: 13.5% ================================================== ARIMA(4, 0, 1) MAPE: 12.89% ================================================== ARIMA(4, 0, 2) MAPE: 12.5% ================================================== ARIMA(4, 0, 3) MAPE: 12.4% ================================================== ARIMA(4, 0, 4) MAPE: 18.55% ================================================== ARIMA(4, 1, 0) MAPE: 14.79% ================================================== ARIMA(4, 1, 1) MAPE: 14.37% ================================================== ARIMA(4, 1, 2) MAPE: 11.32% ================================================== ARIMA(4, 1, 3) MAPE: 11.12% ================================================== ARIMA(4, 1, 4) MAPE: 14.42% ==================================================
Best parameter and lowest MAPE for KEP. RIAU¶
print(f"Best parameters model for KEP. RIAU:", best_param_kep_riau)
print(f"with the lowest MAPE: {lowest_mape_kep_riau.round(2)}%")
Best parameters model for KEP. RIAU: (0, 1, 0) with the lowest MAPE: 6.31%
Make prediction vs actual plot for KEP. RIAU¶
plot_predictions_vs_actual(prediction_series=prediction_kep_riau, actual_series=test_kep_riau)
DKI JAKARTA (11)¶
Split DKI JAKARTA dataset¶
train_dki_jakarta = training_data["DKI JAKARTA"]
test_dki_jakarta = test_data["DKI JAKARTA"]
Make prediction for DKI JAKARTA¶
best_param_dki_jakarta, lowest_mape_dki_jakarta, prediction_dki_jakarta = make_arima_prediction(train_dki_jakarta, test_dki_jakarta)
all_provinces_predictions['DKI JAKARTA'] = prediction_dki_jakarta
ARIMA(0, 0, 0) MAPE: 36.12% ================================================== ARIMA(0, 0, 1) MAPE: 31.04% ================================================== ARIMA(0, 0, 2) MAPE: 28.26% ================================================== ARIMA(0, 0, 3) MAPE: 24.76% ================================================== ARIMA(0, 0, 4) MAPE: 23.17% ================================================== ARIMA(0, 1, 0) MAPE: 13.15% ================================================== ARIMA(0, 1, 1) MAPE: 11.08% ================================================== ARIMA(0, 1, 2) MAPE: 10.09% ================================================== ARIMA(0, 1, 3) MAPE: 11.02% ================================================== ARIMA(0, 1, 4) MAPE: 9.33% ================================================== ARIMA(1, 0, 0) MAPE: 10.23% ================================================== ARIMA(1, 0, 1) MAPE: 13.46% ================================================== ARIMA(1, 0, 2) MAPE: 12.0% ================================================== ARIMA(1, 0, 3) MAPE: 11.46% ================================================== ARIMA(1, 0, 4) MAPE: 11.32% ================================================== ARIMA(1, 1, 0) MAPE: 11.4% ================================================== ARIMA(1, 1, 1) MAPE: 12.61% ================================================== ARIMA(1, 1, 2) MAPE: 9.33% ================================================== ARIMA(1, 1, 3) MAPE: 9.46% ================================================== ARIMA(1, 1, 4) MAPE: 9.17% ================================================== ARIMA(2, 0, 0) MAPE: 12.84% ================================================== ARIMA(2, 0, 1) MAPE: 11.14% ================================================== ARIMA(2, 0, 2) MAPE: 12.61% ================================================== ARIMA(2, 0, 3) MAPE: 11.11% ================================================== ARIMA(2, 0, 4) MAPE: 10.98% ================================================== ARIMA(2, 1, 0) MAPE: 10.19% ================================================== ARIMA(2, 1, 1) MAPE: 9.58% ================================================== ARIMA(2, 1, 2) MAPE: 13.5% ================================================== ARIMA(2, 1, 3) MAPE: 4.79% ================================================== ARIMA(2, 1, 4) MAPE: 4.38% ================================================== ARIMA(3, 0, 0) MAPE: 11.91% ================================================== ARIMA(3, 0, 1) MAPE: 12.43% ================================================== ARIMA(3, 0, 2) MAPE: 15.69% ================================================== ARIMA(3, 0, 3) MAPE: 10.57% ================================================== ARIMA(3, 0, 4) MAPE: 11.64% ================================================== ARIMA(3, 1, 0) MAPE: 10.98% ================================================== ARIMA(3, 1, 1) MAPE: 9.48% ================================================== ARIMA(3, 1, 2) MAPE: 4.78% ================================================== ARIMA(3, 1, 3) MAPE: 4.66% ================================================== ARIMA(3, 1, 4) MAPE: 5.17% ================================================== ARIMA(4, 0, 0) MAPE: 11.58% ================================================== ARIMA(4, 0, 1) MAPE: 11.4% ================================================== ARIMA(4, 0, 2) MAPE: 11.41% ================================================== ARIMA(4, 0, 3) MAPE: 15.96% ================================================== ARIMA(4, 0, 4) MAPE: 11.68% ================================================== ARIMA(4, 1, 0) MAPE: 9.74% ================================================== ARIMA(4, 1, 1) MAPE: 9.3% ================================================== ARIMA(4, 1, 2) MAPE: 4.72% ================================================== ARIMA(4, 1, 3) MAPE: 9.45% ================================================== ARIMA(4, 1, 4) MAPE: 13.14% ==================================================
Best parameter and lowest MAPE for DKI JAKARTA¶
print(f"Best parameters model for DKI JAKARTA:", best_param_dki_jakarta)
print(f"with the lowest MAPE: {lowest_mape_dki_jakarta.round(2)}%")
Best parameters model for DKI JAKARTA: (2, 1, 4) with the lowest MAPE: 4.38%
Make prediction vs actual plot for DKI JAKARTA¶
plot_predictions_vs_actual(prediction_series=prediction_dki_jakarta, actual_series=test_dki_jakarta)
JAWA BARAT (12)¶
Split JAWA BARAT dataset¶
train_jawa_barat = training_data["JAWA BARAT"]
test_jawa_barat = test_data["JAWA BARAT"]
Make prediction for JAWA BARAT¶
best_param_jawa_barat, lowest_mape_jawa_barat, prediction_jawa_barat = make_arima_prediction(train_jawa_barat, test_jawa_barat)
all_provinces_predictions['JAWA BARAT'] = prediction_jawa_barat
ARIMA(0, 0, 0) MAPE: 23.6% ================================================== ARIMA(0, 0, 1) MAPE: 19.38% ================================================== ARIMA(0, 0, 2) MAPE: 16.53% ================================================== ARIMA(0, 0, 3) MAPE: 15.73% ================================================== ARIMA(0, 0, 4) MAPE: 15.47% ================================================== ARIMA(0, 1, 0) MAPE: 25.93% ================================================== ARIMA(0, 1, 1) MAPE: 17.53% ================================================== ARIMA(0, 1, 2) MAPE: 18.91% ================================================== ARIMA(0, 1, 3) MAPE: 15.03% ================================================== ARIMA(0, 1, 4) MAPE: 14.76% ================================================== ARIMA(1, 0, 0) MAPE: 13.01% ================================================== ARIMA(1, 0, 1) MAPE: 10.68% ================================================== ARIMA(1, 0, 2) MAPE: 14.23% ================================================== ARIMA(1, 0, 3) MAPE: 11.05% ================================================== ARIMA(1, 0, 4) MAPE: 11.46% ================================================== ARIMA(1, 1, 0) MAPE: 19.25% ================================================== ARIMA(1, 1, 1) MAPE: 19.73% ================================================== ARIMA(1, 1, 2) MAPE: 19.66% ================================================== ARIMA(1, 1, 3) MAPE: 14.97% ================================================== ARIMA(1, 1, 4) MAPE: 13.22% ================================================== ARIMA(2, 0, 0) MAPE: 10.94% ================================================== ARIMA(2, 0, 1) MAPE: 11.41% ================================================== ARIMA(2, 0, 2) MAPE: 13.23% ================================================== ARIMA(2, 0, 3) MAPE: 11.26% ================================================== ARIMA(2, 0, 4) MAPE: 11.58% ================================================== ARIMA(2, 1, 0) MAPE: 19.72% ================================================== ARIMA(2, 1, 1) MAPE: 19.72% ================================================== ARIMA(2, 1, 2) MAPE: 11.84% ================================================== ARIMA(2, 1, 3) MAPE: 18.22% ================================================== ARIMA(2, 1, 4) MAPE: 15.05% ================================================== ARIMA(3, 0, 0) MAPE: 11.97% ================================================== ARIMA(3, 0, 1) MAPE: 11.92% ================================================== ARIMA(3, 0, 2) MAPE: 14.32% ================================================== ARIMA(3, 0, 3) MAPE: 10.78% ================================================== ARIMA(3, 0, 4) MAPE: 10.75% ================================================== ARIMA(3, 1, 0) MAPE: 18.82% ================================================== ARIMA(3, 1, 1) MAPE: 12.03% ================================================== ARIMA(3, 1, 2) MAPE: 20.64% ================================================== ARIMA(3, 1, 3) MAPE: 12.28% ================================================== ARIMA(3, 1, 4) MAPE: 12.02% ================================================== ARIMA(4, 0, 0) MAPE: 11.69% ================================================== ARIMA(4, 0, 1) MAPE: 12.37% ================================================== ARIMA(4, 0, 2) MAPE: 11.72% ================================================== ARIMA(4, 0, 3) MAPE: 10.74% ================================================== ARIMA(4, 0, 4) MAPE: 11.02% ================================================== ARIMA(4, 1, 0) MAPE: 15.36% ================================================== ARIMA(4, 1, 1) MAPE: 14.87% ================================================== ARIMA(4, 1, 2) MAPE: 15.16% ================================================== ARIMA(4, 1, 3) MAPE: 18.71% ================================================== ARIMA(4, 1, 4) MAPE: 19.25% ==================================================
Best parameter and lowest MAPE for JAWA BARAT¶
print(f"Best parameters model for JAWA BARAT:", best_param_jawa_barat)
print(f"with the lowest MAPE: {lowest_mape_jawa_barat.round(2)}%")
Best parameters model for JAWA BARAT: (1, 0, 1) with the lowest MAPE: 10.68%
Make prediction vs actual plot for JAWA BARAT¶
plot_predictions_vs_actual(prediction_series=prediction_jawa_barat, actual_series=test_jawa_barat)
JAWA TENGAH (13)¶
Split JAWA TENGAH dataset¶
train_jawa_tengah = training_data["JAWA TENGAH"]
test_jawa_tengah = test_data["JAWA TENGAH"]
Make prediction for JAWA TENGAH¶
best_param_jawa_tengah, lowest_mape_jawa_tengah, prediction_jawa_tengah = make_arima_prediction(train_jawa_tengah, test_jawa_tengah)
all_provinces_predictions['JAWA TENGAH'] = prediction_jawa_tengah
ARIMA(0, 0, 0) MAPE: 23.31% ================================================== ARIMA(0, 0, 1) MAPE: 23.17% ================================================== ARIMA(0, 0, 2) MAPE: 24.4% ================================================== ARIMA(0, 0, 3) MAPE: 25.94% ================================================== ARIMA(0, 0, 4) MAPE: 25.91% ================================================== ARIMA(0, 1, 0) MAPE: 27.42% ================================================== ARIMA(0, 1, 1) MAPE: 30.05% ================================================== ARIMA(0, 1, 2) MAPE: 30.12% ================================================== ARIMA(0, 1, 3) MAPE: 32.43% ================================================== ARIMA(0, 1, 4) MAPE: 29.52% ================================================== ARIMA(1, 0, 0) MAPE: 24.76% ================================================== ARIMA(1, 0, 1) MAPE: 26.26% ================================================== ARIMA(1, 0, 2) MAPE: 27.92% ================================================== ARIMA(1, 0, 3) MAPE: 25.9% ================================================== ARIMA(1, 0, 4) MAPE: 25.82% ================================================== ARIMA(1, 1, 0) MAPE: 30.88% ================================================== ARIMA(1, 1, 1) MAPE: 30.85% ================================================== ARIMA(1, 1, 2) MAPE: 31.17% ================================================== ARIMA(1, 1, 3) MAPE: 31.38% ================================================== ARIMA(1, 1, 4) MAPE: 30.26% ================================================== ARIMA(2, 0, 0) MAPE: 27.11% ================================================== ARIMA(2, 0, 1) MAPE: 26.89% ================================================== ARIMA(2, 0, 2) MAPE: 25.2% ================================================== ARIMA(2, 0, 3) MAPE: 25.32% ================================================== ARIMA(2, 0, 4) MAPE: 25.93% ================================================== ARIMA(2, 1, 0) MAPE: 30.83% ================================================== ARIMA(2, 1, 1) MAPE: 30.84% ================================================== ARIMA(2, 1, 2) MAPE: 28.59% ================================================== ARIMA(2, 1, 3) MAPE: 30.97% ================================================== ARIMA(2, 1, 4) MAPE: 29.93% ================================================== ARIMA(3, 0, 0) MAPE: 25.62% ================================================== ARIMA(3, 0, 1) MAPE: 24.62% ================================================== ARIMA(3, 0, 2) MAPE: 25.99% ================================================== ARIMA(3, 0, 3) MAPE: 26.54% ================================================== ARIMA(3, 0, 4) MAPE: 24.82% ================================================== ARIMA(3, 1, 0) MAPE: 30.94% ================================================== ARIMA(3, 1, 1) MAPE: 32.81% ================================================== ARIMA(3, 1, 2) MAPE: 25.88% ================================================== ARIMA(3, 1, 3) MAPE: 32.52% ================================================== ARIMA(3, 1, 4) MAPE: 30.95% ================================================== ARIMA(4, 0, 0) MAPE: 24.15% ================================================== ARIMA(4, 0, 1) MAPE: 25.46% ================================================== ARIMA(4, 0, 2) MAPE: 25.71% ================================================== ARIMA(4, 0, 3) MAPE: 26.2% ================================================== ARIMA(4, 0, 4) MAPE: 26.99% ================================================== ARIMA(4, 1, 0) MAPE: 33.01% ================================================== ARIMA(4, 1, 1) MAPE: 27.79% ================================================== ARIMA(4, 1, 2) MAPE: 29.4% ================================================== ARIMA(4, 1, 3) MAPE: 29.27% ================================================== ARIMA(4, 1, 4) MAPE: 30.09% ==================================================
Best parameter and lowest MAPE for JAWA TENGAH¶
print(f"Best parameters model for JAWA TENGAH:", best_param_jawa_tengah)
print(f"with the lowest MAPE: {lowest_mape_jawa_tengah.round(2)}%")
Best parameters model for JAWA TENGAH: (0, 0, 1) with the lowest MAPE: 23.17%
Make prediction vs actual plot for JAWA TENGAH¶
plot_predictions_vs_actual(prediction_series=prediction_jawa_tengah, actual_series=test_jawa_tengah)
DI YOGYAKARTA (14)¶
Split DI YOGYAKARTA dataset¶
train_di_yogyakarta = training_data["DI YOGYAKARTA"]
test_di_yogyakarta = test_data["DI YOGYAKARTA"]
Make prediction for DI YOGYAKARTA¶
best_param_di_yogyakarta, lowest_mape_di_yogyakarta, prediction_di_yogyakarta = make_arima_prediction(train_di_yogyakarta, test_di_yogyakarta)
all_provinces_predictions['DI YOGYAKARTA'] = prediction_di_yogyakarta
ARIMA(0, 0, 0) MAPE: 35.27% ================================================== ARIMA(0, 0, 1) MAPE: 34.29% ================================================== ARIMA(0, 0, 2) MAPE: 33.28% ================================================== ARIMA(0, 0, 3) MAPE: 32.56% ================================================== ARIMA(0, 0, 4) MAPE: 32.65% ================================================== ARIMA(0, 1, 0) MAPE: 17.35% ================================================== ARIMA(0, 1, 1) MAPE: 19.3% ================================================== ARIMA(0, 1, 2) MAPE: 20.28% ================================================== ARIMA(0, 1, 3) MAPE: 22.94% ================================================== ARIMA(0, 1, 4) MAPE: 23.15% ================================================== ARIMA(1, 0, 0) MAPE: 31.61% ================================================== ARIMA(1, 0, 1) MAPE: 31.36% ================================================== ARIMA(1, 0, 2) MAPE: 32.1% ================================================== ARIMA(1, 0, 3) MAPE: 32.78% ================================================== ARIMA(1, 0, 4) MAPE: 32.65% ================================================== ARIMA(1, 1, 0) MAPE: 18.85% ================================================== ARIMA(1, 1, 1) MAPE: 22.47% ================================================== ARIMA(1, 1, 2) MAPE: 22.59% ================================================== ARIMA(1, 1, 3) MAPE: 22.99% ================================================== ARIMA(1, 1, 4) MAPE: 24.16% ================================================== ARIMA(2, 0, 0) MAPE: 31.26% ================================================== ARIMA(2, 0, 1) MAPE: 31.2% ================================================== ARIMA(2, 0, 2) MAPE: 32.97% ================================================== ARIMA(2, 0, 3) MAPE: 33.45% ================================================== ARIMA(2, 0, 4) MAPE: 29.37% ================================================== ARIMA(2, 1, 0) MAPE: 18.72% ================================================== ARIMA(2, 1, 1) MAPE: 18.67% ================================================== ARIMA(2, 1, 2) MAPE: 22.66% ================================================== ARIMA(2, 1, 3) MAPE: 23.07% ================================================== ARIMA(2, 1, 4) MAPE: 24.1% ================================================== ARIMA(3, 0, 0) MAPE: 32.25% ================================================== ARIMA(3, 0, 1) MAPE: 32.22% ================================================== ARIMA(3, 0, 2) MAPE: 32.69% ================================================== ARIMA(3, 0, 3) MAPE: 32.34% ================================================== ARIMA(3, 0, 4) MAPE: 29.6% ================================================== ARIMA(3, 1, 0) MAPE: 19.32% ================================================== ARIMA(3, 1, 1) MAPE: 21.8% ================================================== ARIMA(3, 1, 2) MAPE: 21.13% ================================================== ARIMA(3, 1, 3) MAPE: 23.17% ================================================== ARIMA(3, 1, 4) MAPE: 23.85% ================================================== ARIMA(4, 0, 0) MAPE: 32.11% ================================================== ARIMA(4, 0, 1) MAPE: 33.11% ================================================== ARIMA(4, 0, 2) MAPE: 32.82% ================================================== ARIMA(4, 0, 3) MAPE: 32.47% ================================================== ARIMA(4, 0, 4) MAPE: 29.25% ================================================== ARIMA(4, 1, 0) MAPE: 22.86% ================================================== ARIMA(4, 1, 1) MAPE: 20.87% ================================================== ARIMA(4, 1, 2) MAPE: 22.12% ================================================== ARIMA(4, 1, 3) MAPE: 22.36% ================================================== ARIMA(4, 1, 4) MAPE: 23.61% ==================================================
Best parameter and lowest MAPE for DI YOGYAKARTA¶
print(f"Best parameters model for DI YOGYAKARTA:", best_param_di_yogyakarta)
print(f"with the lowest MAPE: {lowest_mape_di_yogyakarta.round(2)}%")
Best parameters model for DI YOGYAKARTA: (0, 1, 0) with the lowest MAPE: 17.35%
Make prediction vs actual plot for DI YOGYAKARTA¶
plot_predictions_vs_actual(prediction_series=prediction_di_yogyakarta, actual_series=test_di_yogyakarta)
JAWA TIMUR (15)¶
Split JAWA TIMUR dataset¶
train_jawa_timur = training_data["JAWA TIMUR"]
test_jawa_timur = test_data["JAWA TIMUR"]
Make prediction for JAWA TIMUR¶
best_param_jawa_timur, lowest_mape_jawa_timur, prediction_jawa_timur = make_arima_prediction(train_jawa_timur, test_jawa_timur)
all_provinces_predictions['JAWA TIMUR'] = prediction_jawa_timur
ARIMA(0, 0, 0) MAPE: 14.17% ================================================== ARIMA(0, 0, 1) MAPE: 19.39% ================================================== ARIMA(0, 0, 2) MAPE: 19.04% ================================================== ARIMA(0, 0, 3) MAPE: 19.4% ================================================== ARIMA(0, 0, 4) MAPE: 19.56% ================================================== ARIMA(0, 1, 0) MAPE: 11.06% ================================================== ARIMA(0, 1, 1) MAPE: 11.1% ================================================== ARIMA(0, 1, 2) MAPE: 10.23% ================================================== ARIMA(0, 1, 3) MAPE: 9.5% ================================================== ARIMA(0, 1, 4) MAPE: 9.44% ================================================== ARIMA(1, 0, 0) MAPE: 15.36% ================================================== ARIMA(1, 0, 1) MAPE: 14.69% ================================================== ARIMA(1, 0, 2) MAPE: 14.05% ================================================== ARIMA(1, 0, 3) MAPE: 12.28% ================================================== ARIMA(1, 0, 4) MAPE: 12.22% ================================================== ARIMA(1, 1, 0) MAPE: 9.17% ================================================== ARIMA(1, 1, 1) MAPE: 9.53% ================================================== ARIMA(1, 1, 2) MAPE: 9.71% ================================================== ARIMA(1, 1, 3) MAPE: 9.44% ================================================== ARIMA(1, 1, 4) MAPE: 9.43% ================================================== ARIMA(2, 0, 0) MAPE: 14.52% ================================================== ARIMA(2, 0, 1) MAPE: 14.49% ================================================== ARIMA(2, 0, 2) MAPE: 14.29% ================================================== ARIMA(2, 0, 3) MAPE: 12.21% ================================================== ARIMA(2, 0, 4) MAPE: 11.96% ================================================== ARIMA(2, 1, 0) MAPE: 9.5% ================================================== ARIMA(2, 1, 1) MAPE: 9.99% ================================================== ARIMA(2, 1, 2) MAPE: 9.6% ================================================== ARIMA(2, 1, 3) MAPE: 9.51% ================================================== ARIMA(2, 1, 4) MAPE: 9.22% ================================================== ARIMA(3, 0, 0) MAPE: 14.45% ================================================== ARIMA(3, 0, 1) MAPE: 14.44% ================================================== ARIMA(3, 0, 2) MAPE: 14.52% ================================================== ARIMA(3, 0, 3) MAPE: 14.12% ================================================== ARIMA(3, 0, 4) MAPE: 12.27% ================================================== ARIMA(3, 1, 0) MAPE: 9.52% ================================================== ARIMA(3, 1, 1) MAPE: 9.12% ================================================== ARIMA(3, 1, 2) MAPE: 10.15% ================================================== ARIMA(3, 1, 3) MAPE: 9.28% ================================================== ARIMA(3, 1, 4) MAPE: 9.29% ================================================== ARIMA(4, 0, 0) MAPE: 14.32% ================================================== ARIMA(4, 0, 1) MAPE: 14.4% ================================================== ARIMA(4, 0, 2) MAPE: 14.33% ================================================== ARIMA(4, 0, 3) MAPE: 11.7% ================================================== ARIMA(4, 0, 4) MAPE: 11.82% ================================================== ARIMA(4, 1, 0) MAPE: 10.66% ================================================== ARIMA(4, 1, 1) MAPE: 10.66% ================================================== ARIMA(4, 1, 2) MAPE: 10.1% ================================================== ARIMA(4, 1, 3) MAPE: 11.57% ================================================== ARIMA(4, 1, 4) MAPE: 12.21% ==================================================
Best parameter and lowest MAPE for JAWA TIMUR¶
print(f"Best parameters model for JAWA TIMUR:", best_param_jawa_timur)
print(f"with the lowest MAPE: {lowest_mape_jawa_timur.round(2)}%")
Best parameters model for JAWA TIMUR: (3, 1, 1) with the lowest MAPE: 9.12%
Make prediction vs actual plot for JAWA TIMUR¶
plot_predictions_vs_actual(prediction_series=prediction_jawa_timur, actual_series=test_jawa_timur)
BANTEN (16)¶
Split BANTEN dataset¶
train_banten = training_data["BANTEN"]
test_banten = test_data["BANTEN"]
Make prediction for BANTEN¶
best_param_banten, lowest_mape_banten, prediction_banten = make_arima_prediction(train_banten, test_banten)
all_provinces_predictions['BANTEN'] = prediction_banten
ARIMA(0, 0, 0) MAPE: 20.73% ================================================== ARIMA(0, 0, 1) MAPE: 17.83% ================================================== ARIMA(0, 0, 2) MAPE: 16.42% ================================================== ARIMA(0, 0, 3) MAPE: 15.57% ================================================== ARIMA(0, 0, 4) MAPE: 15.62% ================================================== ARIMA(0, 1, 0) MAPE: 19.04% ================================================== ARIMA(0, 1, 1) MAPE: 16.16% ================================================== ARIMA(0, 1, 2) MAPE: 15.92% ================================================== ARIMA(0, 1, 3) MAPE: 13.1% ================================================== ARIMA(0, 1, 4) MAPE: 8.66% ================================================== ARIMA(1, 0, 0) MAPE: 12.24% ================================================== ARIMA(1, 0, 1) MAPE: 12.52% ================================================== ARIMA(1, 0, 2) MAPE: 15.03% ================================================== ARIMA(1, 0, 3) MAPE: 13.94% ================================================== ARIMA(1, 0, 4) MAPE: 14.02% ================================================== ARIMA(1, 1, 0) MAPE: 16.62% ================================================== ARIMA(1, 1, 1) MAPE: 16.91% ================================================== ARIMA(1, 1, 2) MAPE: 16.53% ================================================== ARIMA(1, 1, 3) MAPE: 9.09% ================================================== ARIMA(1, 1, 4) MAPE: 11.4% ================================================== ARIMA(2, 0, 0) MAPE: 12.65% ================================================== ARIMA(2, 0, 1) MAPE: 11.93% ================================================== ARIMA(2, 0, 2) MAPE: 14.81% ================================================== ARIMA(2, 0, 3) MAPE: 15.16% ================================================== ARIMA(2, 0, 4) MAPE: 13.82% ================================================== ARIMA(2, 1, 0) MAPE: 16.69% ================================================== ARIMA(2, 1, 1) MAPE: 9.22% ================================================== ARIMA(2, 1, 2) MAPE: 8.73% ================================================== ARIMA(2, 1, 3) MAPE: 9.06% ================================================== ARIMA(2, 1, 4) MAPE: 11.92% ================================================== ARIMA(3, 0, 0) MAPE: 14.53% ================================================== ARIMA(3, 0, 1) MAPE: 14.47% ================================================== ARIMA(3, 0, 2) MAPE: 14.18% ================================================== ARIMA(3, 0, 3) MAPE: 12.7% ================================================== ARIMA(3, 0, 4) MAPE: 14.01% ================================================== ARIMA(3, 1, 0) MAPE: 15.6% ================================================== ARIMA(3, 1, 1) MAPE: 13.84% ================================================== ARIMA(3, 1, 2) MAPE: 15.66% ================================================== ARIMA(3, 1, 3) MAPE: 7.94% ================================================== ARIMA(3, 1, 4) MAPE: 8.66% ================================================== ARIMA(4, 0, 0) MAPE: 13.81% ================================================== ARIMA(4, 0, 1) MAPE: 13.56% ================================================== ARIMA(4, 0, 2) MAPE: 12.59% ================================================== ARIMA(4, 0, 3) MAPE: 14.35% ================================================== ARIMA(4, 0, 4) MAPE: 13.95% ================================================== ARIMA(4, 1, 0) MAPE: 13.11% ================================================== ARIMA(4, 1, 1) MAPE: 13.14% ================================================== ARIMA(4, 1, 2) MAPE: 13.08% ================================================== ARIMA(4, 1, 3) MAPE: 7.66% ================================================== ARIMA(4, 1, 4) MAPE: 7.39% ==================================================
Best parameter and lowest MAPE for BANTEN¶
print(f"Best parameters model for BANTEN:", best_param_banten)
print(f"with the lowest MAPE: {lowest_mape_banten.round(2)}%")
Best parameters model for BANTEN: (4, 1, 4) with the lowest MAPE: 7.39%
Make prediction vs actual plot for BANTEN¶
plot_predictions_vs_actual(prediction_series=prediction_banten, actual_series=test_banten)
BALI (17)¶
Split BALI dataset¶
train_bali = training_data["BALI"]
test_bali = test_data["BALI"]
Make prediction for BALI¶
best_param_bali, lowest_mape_bali, prediction_bali = make_arima_prediction(train_bali, test_bali)
all_provinces_predictions['BALI'] = prediction_bali
ARIMA(0, 0, 0) MAPE: 35.51% ================================================== ARIMA(0, 0, 1) MAPE: 32.1% ================================================== ARIMA(0, 0, 2) MAPE: 28.89% ================================================== ARIMA(0, 0, 3) MAPE: 26.92% ================================================== ARIMA(0, 0, 4) MAPE: 25.32% ================================================== ARIMA(0, 1, 0) MAPE: 4.17% ================================================== ARIMA(0, 1, 1) MAPE: 3.34% ================================================== ARIMA(0, 1, 2) MAPE: 3.19% ================================================== ARIMA(0, 1, 3) MAPE: 2.82% ================================================== ARIMA(0, 1, 4) MAPE: 2.97% ================================================== ARIMA(1, 0, 0) MAPE: 11.74% ================================================== ARIMA(1, 0, 1) MAPE: 10.8% ================================================== ARIMA(1, 0, 2) MAPE: 9.86% ================================================== ARIMA(1, 0, 3) MAPE: 9.71% ================================================== ARIMA(1, 0, 4) MAPE: 9.54% ================================================== ARIMA(1, 1, 0) MAPE: 3.42% ================================================== ARIMA(1, 1, 1) MAPE: 3.12% ================================================== ARIMA(1, 1, 2) MAPE: 2.97% ================================================== ARIMA(1, 1, 3) MAPE: 2.68% ================================================== ARIMA(1, 1, 4) MAPE: 3.19% ================================================== ARIMA(2, 0, 0) MAPE: 10.91% ================================================== ARIMA(2, 0, 1) MAPE: 9.92% ================================================== ARIMA(2, 0, 2) MAPE: 9.6% ================================================== ARIMA(2, 0, 3) MAPE: 9.71% ================================================== ARIMA(2, 0, 4) MAPE: 9.55% ================================================== ARIMA(2, 1, 0) MAPE: 3.35% ================================================== ARIMA(2, 1, 1) MAPE: 2.95% ================================================== ARIMA(2, 1, 2) MAPE: 3.08% ================================================== ARIMA(2, 1, 3) MAPE: 3.67% ================================================== ARIMA(2, 1, 4) MAPE: 3.41% ================================================== ARIMA(3, 0, 0) MAPE: 10.3% ================================================== ARIMA(3, 0, 1) MAPE: 9.72% ================================================== ARIMA(3, 0, 2) MAPE: 10.5% ================================================== ARIMA(3, 0, 3) MAPE: 11.83% ================================================== ARIMA(3, 0, 4) MAPE: 9.6% ================================================== ARIMA(3, 1, 0) MAPE: 3.04% ================================================== ARIMA(3, 1, 1) MAPE: 2.68% ================================================== ARIMA(3, 1, 2) MAPE: 3.35% ================================================== ARIMA(3, 1, 3) MAPE: 2.37% ================================================== ARIMA(3, 1, 4) MAPE: 3.48% ================================================== ARIMA(4, 0, 0) MAPE: 9.89% ================================================== ARIMA(4, 0, 1) MAPE: 9.51% ================================================== ARIMA(4, 0, 2) MAPE: 11.72% ================================================== ARIMA(4, 0, 3) MAPE: 10.63% ================================================== ARIMA(4, 0, 4) MAPE: 9.51% ================================================== ARIMA(4, 1, 0) MAPE: 2.67% ================================================== ARIMA(4, 1, 1) MAPE: 2.73% ================================================== ARIMA(4, 1, 2) MAPE: 3.85% ================================================== ARIMA(4, 1, 3) MAPE: 3.67% ================================================== ARIMA(4, 1, 4) MAPE: 3.25% ==================================================
Best parameter and lowest MAPE for BALI¶
print(f"Best parameters model for BALI:", best_param_bali)
print(f"with the lowest MAPE: {lowest_mape_bali.round(2)}%")
Best parameters model for BALI: (3, 1, 3) with the lowest MAPE: 2.37%
Make prediction vs actual plot for BALI¶
plot_predictions_vs_actual(prediction_series=prediction_bali, actual_series=test_bali)
NUSA TENGGARA BARAT (18)¶
Split NUSA TENGGARA BARAT dataset¶
train_nusa_tenggara_barat = training_data["NUSA TENGGARA BARAT"]
test_nusa_tenggara_barat = test_data["NUSA TENGGARA BARAT"]
Make prediction for NUSA TENGGARA BARAT¶
best_param_nusa_tenggara_barat, lowest_mape_nusa_tenggara_barat, prediction_nusa_tenggara_barat = make_arima_prediction(train_nusa_tenggara_barat, test_nusa_tenggara_barat)
all_provinces_predictions['NUSA TENGGARA BARAT'] = prediction_nusa_tenggara_barat
ARIMA(0, 0, 0) MAPE: 53.22% ================================================== ARIMA(0, 0, 1) MAPE: 51.64% ================================================== ARIMA(0, 0, 2) MAPE: 51.57% ================================================== ARIMA(0, 0, 3) MAPE: 58.81% ================================================== ARIMA(0, 0, 4) MAPE: 64.77% ================================================== ARIMA(0, 1, 0) MAPE: 32.8% ================================================== ARIMA(0, 1, 1) MAPE: 39.53% ================================================== ARIMA(0, 1, 2) MAPE: 35.01% ================================================== ARIMA(0, 1, 3) MAPE: 31.98% ================================================== ARIMA(0, 1, 4) MAPE: 31.71% ================================================== ARIMA(1, 0, 0) MAPE: 34.89% ================================================== ARIMA(1, 0, 1) MAPE: 43.62% ================================================== ARIMA(1, 0, 2) MAPE: 51.27% ================================================== ARIMA(1, 0, 3) MAPE: 44.44% ================================================== ARIMA(1, 0, 4) MAPE: 44.36% ================================================== ARIMA(1, 1, 0) MAPE: 39.16% ================================================== ARIMA(1, 1, 1) MAPE: 38.25% ================================================== ARIMA(1, 1, 2) MAPE: 44.28% ================================================== ARIMA(1, 1, 3) MAPE: 31.7% ================================================== ARIMA(1, 1, 4) MAPE: 31.81% ================================================== ARIMA(2, 0, 0) MAPE: 49.43% ================================================== ARIMA(2, 0, 1) MAPE: 47.13% ================================================== ARIMA(2, 0, 2) MAPE: 48.4% ================================================== ARIMA(2, 0, 3) MAPE: 44.42% ================================================== ARIMA(2, 0, 4) MAPE: 73.27% ================================================== ARIMA(2, 1, 0) MAPE: 33.93% ================================================== ARIMA(2, 1, 1) MAPE: 46.22% ================================================== ARIMA(2, 1, 2) MAPE: 45.35% ================================================== ARIMA(2, 1, 3) MAPE: 45.19% ================================================== ARIMA(2, 1, 4) MAPE: 46.65% ================================================== ARIMA(3, 0, 0) MAPE: 43.94% ================================================== ARIMA(3, 0, 1) MAPE: 43.17% ================================================== ARIMA(3, 0, 2) MAPE: 47.81% ================================================== ARIMA(3, 0, 3) MAPE: 49.35% ================================================== ARIMA(3, 0, 4) MAPE: 49.76% ================================================== ARIMA(3, 1, 0) MAPE: 31.32% ================================================== ARIMA(3, 1, 1) MAPE: 31.91% ================================================== ARIMA(3, 1, 2) MAPE: 44.74% ================================================== ARIMA(3, 1, 3) MAPE: 49.59% ================================================== ARIMA(3, 1, 4) MAPE: 47.85% ================================================== ARIMA(4, 0, 0) MAPE: 40.88% ================================================== ARIMA(4, 0, 1) MAPE: 42.17% ================================================== ARIMA(4, 0, 2) MAPE: 50.37% ================================================== ARIMA(4, 0, 3) MAPE: 48.9% ================================================== ARIMA(4, 0, 4) MAPE: 93.79% ================================================== ARIMA(4, 1, 0) MAPE: 34.85% ================================================== ARIMA(4, 1, 1) MAPE: 37.28% ================================================== ARIMA(4, 1, 2) MAPE: 46.01% ================================================== ARIMA(4, 1, 3) MAPE: 44.43% ================================================== ARIMA(4, 1, 4) MAPE: 53.15% ==================================================
Best parameter and lowest MAPE for NUSA TENGGARA BARAT¶
print(f"Best parameters model for NUSA TENGGARA BARAT:", best_param_nusa_tenggara_barat)
print(f"with the lowest MAPE: {lowest_mape_nusa_tenggara_barat.round(2)}%")
Best parameters model for NUSA TENGGARA BARAT: (3, 1, 0) with the lowest MAPE: 31.32%
Make prediction vs actual plot for NUSA TENGGARA BARAT¶
plot_predictions_vs_actual(prediction_series=prediction_nusa_tenggara_barat, actual_series=test_nusa_tenggara_barat)
NUSA TENGGARA TIMUR (19)¶
Split NUSA TENGGARA TIMUR dataset¶
train_nusa_tenggara_timur = training_data["NUSA TENGGARA TIMUR"]
test_nusa_tenggara_timur = test_data["NUSA TENGGARA TIMUR"]
Make prediction for NUSA TENGGARA TIMUR¶
best_param_nusa_tenggara_timur, lowest_mape_nusa_tenggara_timur, prediction_nusa_tenggara_timur = make_arima_prediction(train_nusa_tenggara_timur, test_nusa_tenggara_timur)
all_provinces_predictions['NUSA TENGGARA TIMUR'] = prediction_nusa_tenggara_timur
ARIMA(0, 0, 0) MAPE: 43.85% ================================================== ARIMA(0, 0, 1) MAPE: 37.64% ================================================== ARIMA(0, 0, 2) MAPE: 32.02% ================================================== ARIMA(0, 0, 3) MAPE: 28.47% ================================================== ARIMA(0, 0, 4) MAPE: 26.43% ================================================== ARIMA(0, 1, 0) MAPE: 20.77% ================================================== ARIMA(0, 1, 1) MAPE: 4.56% ================================================== ARIMA(0, 1, 2) MAPE: 9.0% ================================================== ARIMA(0, 1, 3) MAPE: 12.61% ================================================== ARIMA(0, 1, 4) MAPE: 16.54% ================================================== ARIMA(1, 0, 0) MAPE: 17.83% ================================================== ARIMA(1, 0, 1) MAPE: 15.51% ================================================== ARIMA(1, 0, 2) MAPE: 15.99% ================================================== ARIMA(1, 0, 3) MAPE: 15.58% ================================================== ARIMA(1, 0, 4) MAPE: 16.07% ================================================== ARIMA(1, 1, 0) MAPE: 9.4% ================================================== ARIMA(1, 1, 1) MAPE: 23.88% ================================================== ARIMA(1, 1, 2) MAPE: 21.51% ================================================== ARIMA(1, 1, 3) MAPE: 20.72% ================================================== ARIMA(1, 1, 4) MAPE: 16.11% ================================================== ARIMA(2, 0, 0) MAPE: 15.41% ================================================== ARIMA(2, 0, 1) MAPE: 16.04% ================================================== ARIMA(2, 0, 2) MAPE: 15.99% ================================================== ARIMA(2, 0, 3) MAPE: 15.6% ================================================== ARIMA(2, 0, 4) MAPE: 13.16% ================================================== ARIMA(2, 1, 0) MAPE: 4.68% ================================================== ARIMA(2, 1, 1) MAPE: 21.44% ================================================== ARIMA(2, 1, 2) MAPE: 21.31% ================================================== ARIMA(2, 1, 3) MAPE: 11.6% ================================================== ARIMA(2, 1, 4) MAPE: 18.66% ================================================== ARIMA(3, 0, 0) MAPE: 15.54% ================================================== ARIMA(3, 0, 1) MAPE: 15.37% ================================================== ARIMA(3, 0, 2) MAPE: 15.6% ================================================== ARIMA(3, 0, 3) MAPE: 17.59% ================================================== ARIMA(3, 0, 4) MAPE: 12.88% ================================================== ARIMA(3, 1, 0) MAPE: 4.71% ================================================== ARIMA(3, 1, 1) MAPE: 9.8% ================================================== ARIMA(3, 1, 2) MAPE: 16.96% ================================================== ARIMA(3, 1, 3) MAPE: 20.17% ================================================== ARIMA(3, 1, 4) MAPE: 11.18% ================================================== ARIMA(4, 0, 0) MAPE: 16.21% ================================================== ARIMA(4, 0, 1) MAPE: 16.64% ================================================== ARIMA(4, 0, 2) MAPE: 12.8% ================================================== ARIMA(4, 0, 3) MAPE: 15.4% ================================================== ARIMA(4, 0, 4) MAPE: 12.94% ================================================== ARIMA(4, 1, 0) MAPE: 10.82% ================================================== ARIMA(4, 1, 1) MAPE: 11.03% ================================================== ARIMA(4, 1, 2) MAPE: 16.65% ================================================== ARIMA(4, 1, 3) MAPE: 13.1% ================================================== ARIMA(4, 1, 4) MAPE: 20.7% ==================================================
Best parameter and lowest MAPE for NUSA TENGGARA TIMUR¶
print(f"Best parameters model for NUSA TENGGARA TIMUR:", best_param_nusa_tenggara_timur)
print(f"with the lowest MAPE: {lowest_mape_nusa_tenggara_timur.round(2)}%")
Best parameters model for NUSA TENGGARA TIMUR: (0, 1, 1) with the lowest MAPE: 4.56%
Make prediction vs actual plot for NUSA TENGGARA TIMUR¶
plot_predictions_vs_actual(prediction_series=prediction_nusa_tenggara_timur, actual_series=test_nusa_tenggara_timur)
KALIMANTAR BARAT (20)¶
Split KALIMANTAN BARAT dataset¶
train_kalimantan_barat = training_data["KALIMANTAN BARAT"]
test_kalimantan_barat = test_data["KALIMANTAN BARAT"]
Make prediction for KALIMANTAN BARAT¶
best_param_kalimantan_barat, lowest_mape_kalimantan_barat, prediction_kalimantan_barat = make_arima_prediction(train_kalimantan_barat, test_kalimantan_barat)
all_provinces_predictions['KALIMANTAN BARAT'] = prediction_kalimantan_barat
ARIMA(0, 0, 0) MAPE: 48.87% ================================================== ARIMA(0, 0, 1) MAPE: 42.49% ================================================== ARIMA(0, 0, 2) MAPE: 36.7% ================================================== ARIMA(0, 0, 3) MAPE: 28.58% ================================================== ARIMA(0, 0, 4) MAPE: 24.85% ================================================== ARIMA(0, 1, 0) MAPE: 15.27% ================================================== ARIMA(0, 1, 1) MAPE: 8.49% ================================================== ARIMA(0, 1, 2) MAPE: 9.22% ================================================== ARIMA(0, 1, 3) MAPE: 10.63% ================================================== ARIMA(0, 1, 4) MAPE: 10.24% ================================================== ARIMA(1, 0, 0) MAPE: 8.07% ================================================== ARIMA(1, 0, 1) MAPE: 7.42% ================================================== ARIMA(1, 0, 2) MAPE: 5.6% ================================================== ARIMA(1, 0, 3) MAPE: 6.01% ================================================== ARIMA(1, 0, 4) MAPE: 6.96% ================================================== ARIMA(1, 1, 0) MAPE: 8.37% ================================================== ARIMA(1, 1, 1) MAPE: 9.55% ================================================== ARIMA(1, 1, 2) MAPE: 9.71% ================================================== ARIMA(1, 1, 3) MAPE: 10.53% ================================================== ARIMA(1, 1, 4) MAPE: 8.85% ================================================== ARIMA(2, 0, 0) MAPE: 6.26% ================================================== ARIMA(2, 0, 1) MAPE: 5.76% ================================================== ARIMA(2, 0, 2) MAPE: 5.69% ================================================== ARIMA(2, 0, 3) MAPE: 5.27% ================================================== ARIMA(2, 0, 4) MAPE: 5.2% ================================================== ARIMA(2, 1, 0) MAPE: 7.97% ================================================== ARIMA(2, 1, 1) MAPE: 9.59% ================================================== ARIMA(2, 1, 2) MAPE: 9.43% ================================================== ARIMA(2, 1, 3) MAPE: 10.43% ================================================== ARIMA(2, 1, 4) MAPE: 11.43% ================================================== ARIMA(3, 0, 0) MAPE: 5.52% ================================================== ARIMA(3, 0, 1) MAPE: 5.82% ================================================== ARIMA(3, 0, 2) MAPE: 5.62% ================================================== ARIMA(3, 0, 3) MAPE: 6.59% ================================================== ARIMA(3, 0, 4) MAPE: 11.25% ================================================== ARIMA(3, 1, 0) MAPE: 9.69% ================================================== ARIMA(3, 1, 1) MAPE: 11.11% ================================================== ARIMA(3, 1, 2) MAPE: 12.2% ================================================== ARIMA(3, 1, 3) MAPE: 12.36% ================================================== ARIMA(3, 1, 4) MAPE: 12.0% ================================================== ARIMA(4, 0, 0) MAPE: 6.31% ================================================== ARIMA(4, 0, 1) MAPE: 6.12% ================================================== ARIMA(4, 0, 2) MAPE: 5.68% ================================================== ARIMA(4, 0, 3) MAPE: 5.27% ================================================== ARIMA(4, 0, 4) MAPE: 8.35% ================================================== ARIMA(4, 1, 0) MAPE: 13.07% ================================================== ARIMA(4, 1, 1) MAPE: 12.8% ================================================== ARIMA(4, 1, 2) MAPE: 11.49% ================================================== ARIMA(4, 1, 3) MAPE: 12.6% ================================================== ARIMA(4, 1, 4) MAPE: 17.21% ==================================================
Best parameter and lowest MAPE for KALIMANTAN BARAT¶
print(f"Best parameters model for KALIMANTAN BARAT:", best_param_kalimantan_barat)
print(f"with the lowest MAPE: {lowest_mape_kalimantan_barat.round(2)}%")
Best parameters model for KALIMANTAN BARAT: (2, 0, 4) with the lowest MAPE: 5.2%
Make prediction vs actual plot for KALIMANTAN BARAT¶
plot_predictions_vs_actual(prediction_series=prediction_kalimantan_barat, actual_series=test_kalimantan_barat)
KALIMANTAN TENGAH (21)¶
Split KALIMANTAN TENGAH dataset¶
train_kalimantan_tengah = training_data["KALIMANTAN TENGAH"]
test_kalimantan_tengah = test_data["KALIMANTAN TENGAH"]
Make prediction for KALIMANTAN TENGAH¶
best_param_kalimantan_tengah, lowest_mape_kalimantan_tengah, prediction_kalimantan_tengah = make_arima_prediction(train_kalimantan_tengah, test_kalimantan_tengah)
all_provinces_predictions['KALIMANTAN TENGAH'] = prediction_kalimantan_tengah
ARIMA(0, 0, 0) MAPE: 49.81% ================================================== ARIMA(0, 0, 1) MAPE: 42.94% ================================================== ARIMA(0, 0, 2) MAPE: 35.39% ================================================== ARIMA(0, 0, 3) MAPE: 30.77% ================================================== ARIMA(0, 0, 4) MAPE: 34.56% ================================================== ARIMA(0, 1, 0) MAPE: 58.43% ================================================== ARIMA(0, 1, 1) MAPE: 19.49% ================================================== ARIMA(0, 1, 2) MAPE: 21.84% ================================================== ARIMA(0, 1, 3) MAPE: 20.41% ================================================== ARIMA(0, 1, 4) MAPE: 20.52% ================================================== ARIMA(1, 0, 0) MAPE: 20.31% ================================================== ARIMA(1, 0, 1) MAPE: 9.98% ================================================== ARIMA(1, 0, 2) MAPE: 10.21% ================================================== ARIMA(1, 0, 3) MAPE: 10.31% ================================================== ARIMA(1, 0, 4) MAPE: 10.26% ================================================== ARIMA(1, 1, 0) MAPE: 28.58% ================================================== ARIMA(1, 1, 1) MAPE: 22.57% ================================================== ARIMA(1, 1, 2) MAPE: 15.39% ================================================== ARIMA(1, 1, 3) MAPE: 20.43% ================================================== ARIMA(1, 1, 4) MAPE: 21.78% ================================================== ARIMA(2, 0, 0) MAPE: 11.63% ================================================== ARIMA(2, 0, 1) MAPE: 10.56% ================================================== ARIMA(2, 0, 2) MAPE: 9.89% ================================================== ARIMA(2, 0, 3) MAPE: 9.65% ================================================== ARIMA(2, 0, 4) MAPE: 11.2% ================================================== ARIMA(2, 1, 0) MAPE: 24.73% ================================================== ARIMA(2, 1, 1) MAPE: 21.11% ================================================== ARIMA(2, 1, 2) MAPE: 20.89% ================================================== ARIMA(2, 1, 3) MAPE: 21.35% ================================================== ARIMA(2, 1, 4) MAPE: 21.26% ================================================== ARIMA(3, 0, 0) MAPE: 10.84% ================================================== ARIMA(3, 0, 1) MAPE: 10.46% ================================================== ARIMA(3, 0, 2) MAPE: 9.77% ================================================== ARIMA(3, 0, 3) MAPE: 13.42% ================================================== ARIMA(3, 0, 4) MAPE: 7.5% ================================================== ARIMA(3, 1, 0) MAPE: 21.85% ================================================== ARIMA(3, 1, 1) MAPE: 20.43% ================================================== ARIMA(3, 1, 2) MAPE: 19.48% ================================================== ARIMA(3, 1, 3) MAPE: 18.56% ================================================== ARIMA(3, 1, 4) MAPE: 21.24% ================================================== ARIMA(4, 0, 0) MAPE: 10.4% ================================================== ARIMA(4, 0, 1) MAPE: 10.36% ================================================== ARIMA(4, 0, 2) MAPE: 11.65% ================================================== ARIMA(4, 0, 3) MAPE: 14.7% ================================================== ARIMA(4, 0, 4) MAPE: 6.44% ================================================== ARIMA(4, 1, 0) MAPE: 19.74% ================================================== ARIMA(4, 1, 1) MAPE: 20.75% ================================================== ARIMA(4, 1, 2) MAPE: 19.8% ================================================== ARIMA(4, 1, 3) MAPE: 19.63% ================================================== ARIMA(4, 1, 4) MAPE: 22.66% ==================================================
Best parameter and lowest MAPE for KALIMANTAN TENGAH¶
print(f"Best parameters model for KALIMANTAN TENGAH:", best_param_kalimantan_tengah)
print(f"with the lowest MAPE: {lowest_mape_kalimantan_tengah.round(2)}%")
Best parameters model for KALIMANTAN TENGAH: (4, 0, 4) with the lowest MAPE: 6.44%
Make prediction vs actual plot for KALIMANTAN TENGAH¶
plot_predictions_vs_actual(prediction_series=prediction_kalimantan_tengah, actual_series=test_kalimantan_tengah)
KALIMANTAN SELATAN (22)¶
Split KALIMANTAN SELATAN dataset¶
train_kalimantan_selatan = training_data["KALIMANTAN SELATAN"]
test_kalimantan_selatan = test_data["KALIMANTAN SELATAN"]
Make prediction for KALIMANTAN SELATAN¶
best_param_kalimantan_selatan, lowest_mape_kalimantan_selatan, prediction_kalimantan_selatan = make_arima_prediction(train_kalimantan_selatan, test_kalimantan_selatan)
all_provinces_predictions['KALIMANTAN SELATAN'] = prediction_kalimantan_selatan
ARIMA(0, 0, 0) MAPE: 42.33% ================================================== ARIMA(0, 0, 1) MAPE: 34.54% ================================================== ARIMA(0, 0, 2) MAPE: 42.02% ================================================== ARIMA(0, 0, 3) MAPE: 35.46% ================================================== ARIMA(0, 0, 4) MAPE: 39.86% ================================================== ARIMA(0, 1, 0) MAPE: 98.55% ================================================== ARIMA(0, 1, 1) MAPE: 34.95% ================================================== ARIMA(0, 1, 2) MAPE: 58.15% ================================================== ARIMA(0, 1, 3) MAPE: 44.39% ================================================== ARIMA(0, 1, 4) MAPE: 44.38% ================================================== ARIMA(1, 0, 0) MAPE: 23.14% ================================================== ARIMA(1, 0, 1) MAPE: 11.45% ================================================== ARIMA(1, 0, 2) MAPE: 18.44% ================================================== ARIMA(1, 0, 3) MAPE: 20.36% ================================================== ARIMA(1, 0, 4) MAPE: 23.71% ================================================== ARIMA(1, 1, 0) MAPE: 50.9% ================================================== ARIMA(1, 1, 1) MAPE: 55.02% ================================================== ARIMA(1, 1, 2) MAPE: 68.96% ================================================== ARIMA(1, 1, 3) MAPE: 44.38% ================================================== ARIMA(1, 1, 4) MAPE: 56.1% ================================================== ARIMA(2, 0, 0) MAPE: 16.58% ================================================== ARIMA(2, 0, 1) MAPE: 16.71% ================================================== ARIMA(2, 0, 2) MAPE: 20.43% ================================================== ARIMA(2, 0, 3) MAPE: 20.49% ================================================== ARIMA(2, 0, 4) MAPE: 30.6% ================================================== ARIMA(2, 1, 0) MAPE: 56.4% ================================================== ARIMA(2, 1, 1) MAPE: 49.75% ================================================== ARIMA(2, 1, 2) MAPE: 106.92% ================================================== ARIMA(2, 1, 3) MAPE: 36.78% ================================================== ARIMA(2, 1, 4) MAPE: 52.68% ================================================== ARIMA(3, 0, 0) MAPE: 17.69% ================================================== ARIMA(3, 0, 1) MAPE: 22.63% ================================================== ARIMA(3, 0, 2) MAPE: 33.2% ================================================== ARIMA(3, 0, 3) MAPE: 14.71% ================================================== ARIMA(3, 0, 4) MAPE: 31.86% ================================================== ARIMA(3, 1, 0) MAPE: 56.66% ================================================== ARIMA(3, 1, 1) MAPE: 35.06% ================================================== ARIMA(3, 1, 2) MAPE: 87.27% ================================================== ARIMA(3, 1, 3) MAPE: 52.43% ================================================== ARIMA(3, 1, 4) MAPE: 51.59% ================================================== ARIMA(4, 0, 0) MAPE: 28.04% ================================================== ARIMA(4, 0, 1) MAPE: 28.7% ================================================== ARIMA(4, 0, 2) MAPE: 33.74% ================================================== ARIMA(4, 0, 3) MAPE: 30.48% ================================================== ARIMA(4, 0, 4) MAPE: 26.05% ================================================== ARIMA(4, 1, 0) MAPE: 34.95% ================================================== ARIMA(4, 1, 1) MAPE: 36.16% ================================================== ARIMA(4, 1, 2) MAPE: 66.34% ================================================== ARIMA(4, 1, 3) MAPE: 54.59% ================================================== ARIMA(4, 1, 4) MAPE: 53.49% ==================================================
Best parameter and lowest MAPE for KALIMANTAN SELATAN¶
print(f"Best parameters model for KALIMANTAN SELATAN:", best_param_kalimantan_selatan)
print(f"with the lowest MAPE: {lowest_mape_kalimantan_selatan.round(2)}%")
Best parameters model for KALIMANTAN SELATAN: (1, 0, 1) with the lowest MAPE: 11.45%
Make prediction vs actual plot for KALIMANTAN SELATAN¶
plot_predictions_vs_actual(prediction_series=prediction_kalimantan_selatan, actual_series=test_kalimantan_selatan)
KALIMANTAN TIMUR (23)¶
Split KALIMANTAN TIMUR dataset¶
train_kalimantan_timur = training_data["KALIMANTAN TIMUR"]
test_kalimantan_timur = test_data["KALIMANTAN TIMUR"]
Make prediction for KALIMANTAN TIMUR¶
best_param_kalimantan_timur, lowest_mape_kalimantan_timur, prediction_kalimantan_timur = make_arima_prediction(train_kalimantan_timur, test_kalimantan_timur)
all_provinces_predictions['KALIMANTAN TIMUR'] = prediction_kalimantan_timur
ARIMA(0, 0, 0) MAPE: 50.48% ================================================== ARIMA(0, 0, 1) MAPE: 41.17% ================================================== ARIMA(0, 0, 2) MAPE: 35.86% ================================================== ARIMA(0, 0, 3) MAPE: 28.79% ================================================== ARIMA(0, 0, 4) MAPE: 27.24% ================================================== ARIMA(0, 1, 0) MAPE: 25.84% ================================================== ARIMA(0, 1, 1) MAPE: 12.62% ================================================== ARIMA(0, 1, 2) MAPE: 14.44% ================================================== ARIMA(0, 1, 3) MAPE: 14.01% ================================================== ARIMA(0, 1, 4) MAPE: 13.96% ================================================== ARIMA(1, 0, 0) MAPE: 13.65% ================================================== ARIMA(1, 0, 1) MAPE: 9.61% ================================================== ARIMA(1, 0, 2) MAPE: 12.26% ================================================== ARIMA(1, 0, 3) MAPE: 11.7% ================================================== ARIMA(1, 0, 4) MAPE: 14.52% ================================================== ARIMA(1, 1, 0) MAPE: 14.34% ================================================== ARIMA(1, 1, 1) MAPE: 14.75% ================================================== ARIMA(1, 1, 2) MAPE: 14.51% ================================================== ARIMA(1, 1, 3) MAPE: 14.0% ================================================== ARIMA(1, 1, 4) MAPE: 14.68% ================================================== ARIMA(2, 0, 0) MAPE: 9.58% ================================================== ARIMA(2, 0, 1) MAPE: 10.32% ================================================== ARIMA(2, 0, 2) MAPE: 12.03% ================================================== ARIMA(2, 0, 3) MAPE: 12.0% ================================================== ARIMA(2, 0, 4) MAPE: 14.48% ================================================== ARIMA(2, 1, 0) MAPE: 14.71% ================================================== ARIMA(2, 1, 1) MAPE: 14.46% ================================================== ARIMA(2, 1, 2) MAPE: 14.11% ================================================== ARIMA(2, 1, 3) MAPE: 17.92% ================================================== ARIMA(2, 1, 4) MAPE: 13.73% ================================================== ARIMA(3, 0, 0) MAPE: 11.24% ================================================== ARIMA(3, 0, 1) MAPE: 9.69% ================================================== ARIMA(3, 0, 2) MAPE: 13.68% ================================================== ARIMA(3, 0, 3) MAPE: 11.81% ================================================== ARIMA(3, 0, 4) MAPE: 12.33% ================================================== ARIMA(3, 1, 0) MAPE: 14.12% ================================================== ARIMA(3, 1, 1) MAPE: 13.81% ================================================== ARIMA(3, 1, 2) MAPE: 10.17% ================================================== ARIMA(3, 1, 3) MAPE: 17.87% ================================================== ARIMA(3, 1, 4) MAPE: 14.32% ================================================== ARIMA(4, 0, 0) MAPE: 11.67% ================================================== ARIMA(4, 0, 1) MAPE: 11.69% ================================================== ARIMA(4, 0, 2) MAPE: 11.7% ================================================== ARIMA(4, 0, 3) MAPE: 10.55% ================================================== ARIMA(4, 0, 4) MAPE: 13.64% ================================================== ARIMA(4, 1, 0) MAPE: 13.46% ================================================== ARIMA(4, 1, 1) MAPE: 14.7% ================================================== ARIMA(4, 1, 2) MAPE: 17.8% ================================================== ARIMA(4, 1, 3) MAPE: 20.34% ================================================== ARIMA(4, 1, 4) MAPE: 22.25% ==================================================
Best parameter and lowest MAPE for KALIMANTAN TIMUR¶
print(f"Best parameters model for KALIMANTAN TIMUR:", best_param_kalimantan_timur)
print(f"with the lowest MAPE: {lowest_mape_kalimantan_timur.round(2)}%")
Best parameters model for KALIMANTAN TIMUR: (2, 0, 0) with the lowest MAPE: 9.58%
Make prediction vs actual plot for KALIMANTAN TIMUR¶
plot_predictions_vs_actual(prediction_series=prediction_kalimantan_timur, actual_series=test_kalimantan_timur)
KALIMANTAN UTARA (24)¶
Split KALIMANTAN UTARA dataset¶
train_kalimantan_utara = training_data["KALIMANTAN UTARA"]
test_kalimantan_utara = test_data["KALIMANTAN UTARA"]
Make prediction for KALIMANTAN UTARA¶
best_param_kalimantan_utara, lowest_mape_kalimantan_utara, prediction_kalimantan_utara = make_arima_prediction(train_kalimantan_utara, test_kalimantan_utara)
all_provinces_predictions['KALIMANTAN UTARA'] = prediction_kalimantan_utara
ARIMA(0, 0, 0) MAPE: 34.6% ================================================== ARIMA(0, 0, 1) MAPE: 29.56% ================================================== ARIMA(0, 0, 2) MAPE: 25.98% ================================================== ARIMA(0, 0, 3) MAPE: 22.49% ================================================== ARIMA(0, 0, 4) MAPE: 19.87% ================================================== ARIMA(0, 1, 0) MAPE: 28.24% ================================================== ARIMA(0, 1, 1) MAPE: 10.88% ================================================== ARIMA(0, 1, 2) MAPE: 13.42% ================================================== ARIMA(0, 1, 3) MAPE: 12.65% ================================================== ARIMA(0, 1, 4) MAPE: 13.51% ================================================== ARIMA(1, 0, 0) MAPE: 16.7% ================================================== ARIMA(1, 0, 1) MAPE: 13.09% ================================================== ARIMA(1, 0, 2) MAPE: 13.65% ================================================== ARIMA(1, 0, 3) MAPE: 13.93% ================================================== ARIMA(1, 0, 4) MAPE: 14.43% ================================================== ARIMA(1, 1, 0) MAPE: 12.1% ================================================== ARIMA(1, 1, 1) MAPE: 12.77% ================================================== ARIMA(1, 1, 2) MAPE: 12.46% ================================================== ARIMA(1, 1, 3) MAPE: 12.4% ================================================== ARIMA(1, 1, 4) MAPE: 13.99% ================================================== ARIMA(2, 0, 0) MAPE: 12.82% ================================================== ARIMA(2, 0, 1) MAPE: 13.36% ================================================== ARIMA(2, 0, 2) MAPE: 13.13% ================================================== ARIMA(2, 0, 3) MAPE: 13.21% ================================================== ARIMA(2, 0, 4) MAPE: 14.85% ================================================== ARIMA(2, 1, 0) MAPE: 12.77% ================================================== ARIMA(2, 1, 1) MAPE: 7.31% ================================================== ARIMA(2, 1, 2) MAPE: 12.48% ================================================== ARIMA(2, 1, 3) MAPE: 13.46% ================================================== ARIMA(2, 1, 4) MAPE: 11.9% ================================================== ARIMA(3, 0, 0) MAPE: 13.79% ================================================== ARIMA(3, 0, 1) MAPE: 13.21% ================================================== ARIMA(3, 0, 2) MAPE: 13.21% ================================================== ARIMA(3, 0, 3) MAPE: 13.03% ================================================== ARIMA(3, 0, 4) MAPE: 16.04% ================================================== ARIMA(3, 1, 0) MAPE: 12.58% ================================================== ARIMA(3, 1, 1) MAPE: 12.71% ================================================== ARIMA(3, 1, 2) MAPE: 13.36% ================================================== ARIMA(3, 1, 3) MAPE: 9.9% ================================================== ARIMA(3, 1, 4) MAPE: 16.67% ================================================== ARIMA(4, 0, 0) MAPE: 14.05% ================================================== ARIMA(4, 0, 1) MAPE: 13.46% ================================================== ARIMA(4, 0, 2) MAPE: 13.55% ================================================== ARIMA(4, 0, 3) MAPE: 20.16% ================================================== ARIMA(4, 0, 4) MAPE: 14.43% ================================================== ARIMA(4, 1, 0) MAPE: 13.38% ================================================== ARIMA(4, 1, 1) MAPE: 13.82% ================================================== ARIMA(4, 1, 2) MAPE: 18.09% ================================================== ARIMA(4, 1, 3) MAPE: 6.67% ================================================== ARIMA(4, 1, 4) MAPE: 22.74% ==================================================
Best parameter and lowest MAPE for KALIMANTAN UTARA¶
print(f"Best parameters model for KALIMANTAN UTARA:", best_param_kalimantan_utara)
print(f"with the lowest MAPE: {lowest_mape_kalimantan_utara.round(2)}%")
Best parameters model for KALIMANTAN UTARA: (4, 1, 3) with the lowest MAPE: 6.67%
Make prediction vs actual plot for KALIMANTAN UTARA¶
plot_predictions_vs_actual(prediction_series=prediction_kalimantan_utara, actual_series=test_kalimantan_utara)
SULAWESI UTARA (25)¶
Split SULAWESI UTARA dataset¶
train_sulawesi_utara = training_data["SULAWESI UTARA"]
test_sulawesi_utara = test_data["SULAWESI UTARA"]
Make prediction for SULAWESI UTARA¶
best_param_sulawesi_utara, lowest_mape_sulawesi_utara, prediction_sulawesi_utara = make_arima_prediction(train_sulawesi_utara, test_sulawesi_utara)
all_provinces_predictions['SULAWESI UTARA'] = prediction_sulawesi_utara
ARIMA(0, 0, 0) MAPE: 46.09% ================================================== ARIMA(0, 0, 1) MAPE: 42.56% ================================================== ARIMA(0, 0, 2) MAPE: 38.43% ================================================== ARIMA(0, 0, 3) MAPE: 34.17% ================================================== ARIMA(0, 0, 4) MAPE: 30.01% ================================================== ARIMA(0, 1, 0) MAPE: 7.41% ================================================== ARIMA(0, 1, 1) MAPE: 7.4% ================================================== ARIMA(0, 1, 2) MAPE: 5.54% ================================================== ARIMA(0, 1, 3) MAPE: 10.1% ================================================== ARIMA(0, 1, 4) MAPE: 12.71% ================================================== ARIMA(1, 0, 0) MAPE: 20.15% ================================================== ARIMA(1, 0, 1) MAPE: 19.61% ================================================== ARIMA(1, 0, 2) MAPE: 19.81% ================================================== ARIMA(1, 0, 3) MAPE: 19.85% ================================================== ARIMA(1, 0, 4) MAPE: 19.81% ================================================== ARIMA(1, 1, 0) MAPE: 5.84% ================================================== ARIMA(1, 1, 1) MAPE: 5.83% ================================================== ARIMA(1, 1, 2) MAPE: 5.75% ================================================== ARIMA(1, 1, 3) MAPE: 13.01% ================================================== ARIMA(1, 1, 4) MAPE: 10.8% ================================================== ARIMA(2, 0, 0) MAPE: 19.52% ================================================== ARIMA(2, 0, 1) MAPE: 19.57% ================================================== ARIMA(2, 0, 2) MAPE: 19.75% ================================================== ARIMA(2, 0, 3) MAPE: 19.81% ================================================== ARIMA(2, 0, 4) MAPE: 19.78% ================================================== ARIMA(2, 1, 0) MAPE: 5.81% ================================================== ARIMA(2, 1, 1) MAPE: 12.56% ================================================== ARIMA(2, 1, 2) MAPE: 12.55% ================================================== ARIMA(2, 1, 3) MAPE: 13.08% ================================================== ARIMA(2, 1, 4) MAPE: 12.77% ================================================== ARIMA(3, 0, 0) MAPE: 19.53% ================================================== ARIMA(3, 0, 1) MAPE: 19.58% ================================================== ARIMA(3, 0, 2) MAPE: 20.39% ================================================== ARIMA(3, 0, 3) MAPE: 21.91% ================================================== ARIMA(3, 0, 4) MAPE: 19.75% ================================================== ARIMA(3, 1, 0) MAPE: 5.74% ================================================== ARIMA(3, 1, 1) MAPE: 12.7% ================================================== ARIMA(3, 1, 2) MAPE: 20.7% ================================================== ARIMA(3, 1, 3) MAPE: 11.54% ================================================== ARIMA(3, 1, 4) MAPE: 10.84% ================================================== ARIMA(4, 0, 0) MAPE: 19.6% ================================================== ARIMA(4, 0, 1) MAPE: 19.7% ================================================== ARIMA(4, 0, 2) MAPE: 20.26% ================================================== ARIMA(4, 0, 3) MAPE: 20.14% ================================================== ARIMA(4, 0, 4) MAPE: 21.4% ================================================== ARIMA(4, 1, 0) MAPE: 9.18% ================================================== ARIMA(4, 1, 1) MAPE: 9.46% ================================================== ARIMA(4, 1, 2) MAPE: 9.13% ================================================== ARIMA(4, 1, 3) MAPE: 11.2% ================================================== ARIMA(4, 1, 4) MAPE: 7.52% ==================================================
Best parameter and lowest MAPE for SULAWESI UTARA¶
print(f"Best parameters model for SULAWESI UTARA:", best_param_sulawesi_utara)
print(f"with the lowest MAPE: {lowest_mape_sulawesi_utara.round(2)}%")
Best parameters model for SULAWESI UTARA: (0, 1, 2) with the lowest MAPE: 5.54%
Make prediction vs actual plot for SULAWESI UTARA¶
plot_predictions_vs_actual(prediction_series=prediction_sulawesi_utara, actual_series=test_sulawesi_utara)
SULAWESI TENGAH (26)¶
Split SULAWESI TENGAH dataset¶
train_sulawesi_tengah = training_data["SULAWESI TENGAH"]
test_sulawesi_tengah = test_data["SULAWESI TENGAH"]
Make prediction for SULAWESI TENGAH¶
best_param_sulawesi_tengah, lowest_mape_sulawesi_tengah, prediction_sulawesi_tengah = make_arima_prediction(train_sulawesi_tengah, test_sulawesi_tengah)
all_provinces_predictions['SULAWESI TENGAH'] = prediction_sulawesi_tengah
ARIMA(0, 0, 0) MAPE: 54.06% ================================================== ARIMA(0, 0, 1) MAPE: 45.13% ================================================== ARIMA(0, 0, 2) MAPE: 35.44% ================================================== ARIMA(0, 0, 3) MAPE: 34.16% ================================================== ARIMA(0, 0, 4) MAPE: 27.2% ================================================== ARIMA(0, 1, 0) MAPE: 17.66% ================================================== ARIMA(0, 1, 1) MAPE: 13.04% ================================================== ARIMA(0, 1, 2) MAPE: 21.8% ================================================== ARIMA(0, 1, 3) MAPE: 9.91% ================================================== ARIMA(0, 1, 4) MAPE: 9.87% ================================================== ARIMA(1, 0, 0) MAPE: 11.26% ================================================== ARIMA(1, 0, 1) MAPE: 11.78% ================================================== ARIMA(1, 0, 2) MAPE: 15.95% ================================================== ARIMA(1, 0, 3) MAPE: 15.88% ================================================== ARIMA(1, 0, 4) MAPE: 15.91% ================================================== ARIMA(1, 1, 0) MAPE: 12.53% ================================================== ARIMA(1, 1, 1) MAPE: 13.47% ================================================== ARIMA(1, 1, 2) MAPE: 20.2% ================================================== ARIMA(1, 1, 3) MAPE: 9.92% ================================================== ARIMA(1, 1, 4) MAPE: 10.03% ================================================== ARIMA(2, 0, 0) MAPE: 12.62% ================================================== ARIMA(2, 0, 1) MAPE: 11.9% ================================================== ARIMA(2, 0, 2) MAPE: 15.37% ================================================== ARIMA(2, 0, 3) MAPE: 15.34% ================================================== ARIMA(2, 0, 4) MAPE: 17.25% ================================================== ARIMA(2, 1, 0) MAPE: 19.77% ================================================== ARIMA(2, 1, 1) MAPE: 19.08% ================================================== ARIMA(2, 1, 2) MAPE: 14.41% ================================================== ARIMA(2, 1, 3) MAPE: 9.43% ================================================== ARIMA(2, 1, 4) MAPE: 9.05% ================================================== ARIMA(3, 0, 0) MAPE: 15.03% ================================================== ARIMA(3, 0, 1) MAPE: 15.56% ================================================== ARIMA(3, 0, 2) MAPE: 14.91% ================================================== ARIMA(3, 0, 3) MAPE: 15.09% ================================================== ARIMA(3, 0, 4) MAPE: 15.15% ================================================== ARIMA(3, 1, 0) MAPE: 15.81% ================================================== ARIMA(3, 1, 1) MAPE: 11.64% ================================================== ARIMA(3, 1, 2) MAPE: 14.21% ================================================== ARIMA(3, 1, 3) MAPE: 15.76% ================================================== ARIMA(3, 1, 4) MAPE: 15.35% ================================================== ARIMA(4, 0, 0) MAPE: 16.31% ================================================== ARIMA(4, 0, 1) MAPE: 15.67% ================================================== ARIMA(4, 0, 2) MAPE: 15.18% ================================================== ARIMA(4, 0, 3) MAPE: 14.76% ================================================== ARIMA(4, 0, 4) MAPE: 18.6% ================================================== ARIMA(4, 1, 0) MAPE: 13.69% ================================================== ARIMA(4, 1, 1) MAPE: 12.15% ================================================== ARIMA(4, 1, 2) MAPE: 12.11% ================================================== ARIMA(4, 1, 3) MAPE: 12.9% ================================================== ARIMA(4, 1, 4) MAPE: 15.43% ==================================================
Best parameter and lowest MAPE for SULAWESI TENGAH¶
print(f"Best parameters model for SULAWESI TENGAH:", best_param_sulawesi_tengah)
print(f"with the lowest MAPE: {lowest_mape_sulawesi_tengah.round(2)}%")
Best parameters model for SULAWESI TENGAH: (2, 1, 4) with the lowest MAPE: 9.05%
Make prediction vs actual plot for SULAWESI TENGAH¶
plot_predictions_vs_actual(prediction_series=prediction_sulawesi_tengah, actual_series=test_sulawesi_tengah)
SULAWESI SELATAN (27)¶
Split SULAWESI SELATAN dataset¶
train_sulawesi_selatan = training_data["SULAWESI SELATAN"]
test_sulawesi_selatan = test_data["SULAWESI SELATAN"]
Make prediction for SULAWESI SELATAN¶
best_param_sulawesi_selatan, lowest_mape_sulawesi_selatan, prediction_sulawesi_selatan = make_arima_prediction(train_sulawesi_selatan, test_sulawesi_selatan)
all_provinces_predictions['SULAWESI SELATAN'] = prediction_sulawesi_selatan
ARIMA(0, 0, 0) MAPE: 46.44% ================================================== ARIMA(0, 0, 1) MAPE: 38.47% ================================================== ARIMA(0, 0, 2) MAPE: 32.2% ================================================== ARIMA(0, 0, 3) MAPE: 29.76% ================================================== ARIMA(0, 0, 4) MAPE: 28.62% ================================================== ARIMA(0, 1, 0) MAPE: 23.3% ================================================== ARIMA(0, 1, 1) MAPE: 13.19% ================================================== ARIMA(0, 1, 2) MAPE: 30.42% ================================================== ARIMA(0, 1, 3) MAPE: 12.49% ================================================== ARIMA(0, 1, 4) MAPE: 15.05% ================================================== ARIMA(1, 0, 0) MAPE: 14.29% ================================================== ARIMA(1, 0, 1) MAPE: 14.61% ================================================== ARIMA(1, 0, 2) MAPE: 23.62% ================================================== ARIMA(1, 0, 3) MAPE: 20.75% ================================================== ARIMA(1, 0, 4) MAPE: 21.42% ================================================== ARIMA(1, 1, 0) MAPE: 12.33% ================================================== ARIMA(1, 1, 1) MAPE: 14.77% ================================================== ARIMA(1, 1, 2) MAPE: 31.37% ================================================== ARIMA(1, 1, 3) MAPE: 17.05% ================================================== ARIMA(1, 1, 4) MAPE: 14.59% ================================================== ARIMA(2, 0, 0) MAPE: 14.76% ================================================== ARIMA(2, 0, 1) MAPE: 13.53% ================================================== ARIMA(2, 0, 2) MAPE: 21.83% ================================================== ARIMA(2, 0, 3) MAPE: 21.41% ================================================== ARIMA(2, 0, 4) MAPE: 22.46% ================================================== ARIMA(2, 1, 0) MAPE: 22.83% ================================================== ARIMA(2, 1, 1) MAPE: 22.75% ================================================== ARIMA(2, 1, 2) MAPE: 9.71% ================================================== ARIMA(2, 1, 3) MAPE: 15.46% ================================================== ARIMA(2, 1, 4) MAPE: 14.4% ================================================== ARIMA(3, 0, 0) MAPE: 19.27% ================================================== ARIMA(3, 0, 1) MAPE: 19.38% ================================================== ARIMA(3, 0, 2) MAPE: 19.64% ================================================== ARIMA(3, 0, 3) MAPE: 19.8% ================================================== ARIMA(3, 0, 4) MAPE: 21.38% ================================================== ARIMA(3, 1, 0) MAPE: 14.84% ================================================== ARIMA(3, 1, 1) MAPE: 14.82% ================================================== ARIMA(3, 1, 2) MAPE: 14.75% ================================================== ARIMA(3, 1, 3) MAPE: 12.37% ================================================== ARIMA(3, 1, 4) MAPE: 14.11% ================================================== ARIMA(4, 0, 0) MAPE: 19.83% ================================================== ARIMA(4, 0, 1) MAPE: 21.62% ================================================== ARIMA(4, 0, 2) MAPE: 19.69% ================================================== ARIMA(4, 0, 3) MAPE: 19.79% ================================================== ARIMA(4, 0, 4) MAPE: 22.62% ================================================== ARIMA(4, 1, 0) MAPE: 13.37% ================================================== ARIMA(4, 1, 1) MAPE: 12.0% ================================================== ARIMA(4, 1, 2) MAPE: 14.04% ================================================== ARIMA(4, 1, 3) MAPE: 17.4% ================================================== ARIMA(4, 1, 4) MAPE: 14.75% ==================================================
Best parameter and lowest MAPE for SULAWESI SELATAN¶
print(f"Best parameters model for SULAWESI SELATAN:", best_param_sulawesi_selatan)
print(f"with the lowest MAPE: {lowest_mape_sulawesi_selatan.round(2)}%")
Best parameters model for SULAWESI SELATAN: (2, 1, 2) with the lowest MAPE: 9.71%
Make prediction vs actual plot for SULAWESI SELATAN¶
plot_predictions_vs_actual(prediction_series=prediction_sulawesi_selatan, actual_series=test_sulawesi_selatan)
SULAWESI TENGGARA (28)¶
Split SULAWESI TENGGARA dataset¶
train_sulawesi_tenggara = training_data["SULAWESI TENGGARA"]
test_sulawesi_tenggara = test_data["SULAWESI TENGGARA"]
Make prediction for SULAWESI TENGGARA¶
best_param_sulawesi_tenggara, lowest_mape_sulawesi_tenggara, prediction_sulawesi_tenggara = make_arima_prediction(train_sulawesi_tenggara, test_sulawesi_tenggara)
all_provinces_predictions['SULAWESI TENGGARA'] = prediction_sulawesi_tenggara
ARIMA(0, 0, 0) MAPE: 40.3% ================================================== ARIMA(0, 0, 1) MAPE: 34.73% ================================================== ARIMA(0, 0, 2) MAPE: 32.32% ================================================== ARIMA(0, 0, 3) MAPE: 29.35% ================================================== ARIMA(0, 0, 4) MAPE: 23.98% ================================================== ARIMA(0, 1, 0) MAPE: 7.95% ================================================== ARIMA(0, 1, 1) MAPE: 9.68% ================================================== ARIMA(0, 1, 2) MAPE: 8.48% ================================================== ARIMA(0, 1, 3) MAPE: 17.12% ================================================== ARIMA(0, 1, 4) MAPE: 16.65% ================================================== ARIMA(1, 0, 0) MAPE: 19.13% ================================================== ARIMA(1, 0, 1) MAPE: 18.7% ================================================== ARIMA(1, 0, 2) MAPE: 16.36% ================================================== ARIMA(1, 0, 3) MAPE: 20.39% ================================================== ARIMA(1, 0, 4) MAPE: 18.88% ================================================== ARIMA(1, 1, 0) MAPE: 9.77% ================================================== ARIMA(1, 1, 1) MAPE: 8.14% ================================================== ARIMA(1, 1, 2) MAPE: 6.82% ================================================== ARIMA(1, 1, 3) MAPE: 9.77% ================================================== ARIMA(1, 1, 4) MAPE: 11.15% ================================================== ARIMA(2, 0, 0) MAPE: 18.45% ================================================== ARIMA(2, 0, 1) MAPE: 19.95% ================================================== ARIMA(2, 0, 2) MAPE: 16.57% ================================================== ARIMA(2, 0, 3) MAPE: 16.65% ================================================== ARIMA(2, 0, 4) MAPE: 18.09% ================================================== ARIMA(2, 1, 0) MAPE: 8.54% ================================================== ARIMA(2, 1, 1) MAPE: 6.95% ================================================== ARIMA(2, 1, 2) MAPE: 13.73% ================================================== ARIMA(2, 1, 3) MAPE: 9.07% ================================================== ARIMA(2, 1, 4) MAPE: 8.86% ================================================== ARIMA(3, 0, 0) MAPE: 16.23% ================================================== ARIMA(3, 0, 1) MAPE: 15.99% ================================================== ARIMA(3, 0, 2) MAPE: 16.53% ================================================== ARIMA(3, 0, 3) MAPE: 17.54% ================================================== ARIMA(3, 0, 4) MAPE: 17.98% ================================================== ARIMA(3, 1, 0) MAPE: 13.57% ================================================== ARIMA(3, 1, 1) MAPE: 10.14% ================================================== ARIMA(3, 1, 2) MAPE: 8.78% ================================================== ARIMA(3, 1, 3) MAPE: 16.86% ================================================== ARIMA(3, 1, 4) MAPE: 8.92% ================================================== ARIMA(4, 0, 0) MAPE: 20.09% ================================================== ARIMA(4, 0, 1) MAPE: 17.05% ================================================== ARIMA(4, 0, 2) MAPE: 17.74% ================================================== ARIMA(4, 0, 3) MAPE: 17.69% ================================================== ARIMA(4, 0, 4) MAPE: 18.25% ================================================== ARIMA(4, 1, 0) MAPE: 14.4% ================================================== ARIMA(4, 1, 1) MAPE: 9.9% ================================================== ARIMA(4, 1, 2) MAPE: 8.77% ================================================== ARIMA(4, 1, 3) MAPE: 8.79% ================================================== ARIMA(4, 1, 4) MAPE: 14.28% ==================================================
Best parameter and lowest MAPE for SULAWESI TENGGARA¶
print(f"Best parameters model for SULAWESI TENGGARA:", best_param_sulawesi_tenggara)
print(f"with the lowest MAPE: {lowest_mape_sulawesi_tenggara.round(2)}%")
Best parameters model for SULAWESI TENGGARA: (1, 1, 2) with the lowest MAPE: 6.82%
Make prediction vs actual plot for SULAWESI TENGGARA¶
plot_predictions_vs_actual(prediction_series=prediction_sulawesi_tenggara, actual_series=test_sulawesi_tenggara)
GORONTALO (29)¶
Split GORONTALO dataset¶
train_gorontalo = training_data["GORONTALO"]
test_gorontalo = test_data["GORONTALO"]
Make prediction for GORONTALO¶
best_param_gorontalo, lowest_mape_gorontalo, prediction_gorontalo = make_arima_prediction(train_gorontalo, test_gorontalo)
all_provinces_predictions['GORONTALO'] = prediction_gorontalo
ARIMA(0, 0, 0) MAPE: 58.64% ================================================== ARIMA(0, 0, 1) MAPE: 51.81% ================================================== ARIMA(0, 0, 2) MAPE: 41.43% ================================================== ARIMA(0, 0, 3) MAPE: 36.81% ================================================== ARIMA(0, 0, 4) MAPE: 35.69% ================================================== ARIMA(0, 1, 0) MAPE: 22.16% ================================================== ARIMA(0, 1, 1) MAPE: 5.46% ================================================== ARIMA(0, 1, 2) MAPE: 12.97% ================================================== ARIMA(0, 1, 3) MAPE: 10.18% ================================================== ARIMA(0, 1, 4) MAPE: 12.54% ================================================== ARIMA(1, 0, 0) MAPE: 24.98% ================================================== ARIMA(1, 0, 1) MAPE: 22.49% ================================================== ARIMA(1, 0, 2) MAPE: 21.61% ================================================== ARIMA(1, 0, 3) MAPE: 23.48% ================================================== ARIMA(1, 0, 4) MAPE: 26.12% ================================================== ARIMA(1, 1, 0) MAPE: 7.57% ================================================== ARIMA(1, 1, 1) MAPE: 8.76% ================================================== ARIMA(1, 1, 2) MAPE: 12.33% ================================================== ARIMA(1, 1, 3) MAPE: 12.25% ================================================== ARIMA(1, 1, 4) MAPE: 16.4% ================================================== ARIMA(2, 0, 0) MAPE: 22.05% ================================================== ARIMA(2, 0, 1) MAPE: 21.42% ================================================== ARIMA(2, 0, 2) MAPE: 22.25% ================================================== ARIMA(2, 0, 3) MAPE: 23.77% ================================================== ARIMA(2, 0, 4) MAPE: 39.22% ================================================== ARIMA(2, 1, 0) MAPE: 10.07% ================================================== ARIMA(2, 1, 1) MAPE: 11.05% ================================================== ARIMA(2, 1, 2) MAPE: 21.56% ================================================== ARIMA(2, 1, 3) MAPE: 12.38% ================================================== ARIMA(2, 1, 4) MAPE: 14.08% ================================================== ARIMA(3, 0, 0) MAPE: 20.86% ================================================== ARIMA(3, 0, 1) MAPE: 20.77% ================================================== ARIMA(3, 0, 2) MAPE: 21.18% ================================================== ARIMA(3, 0, 3) MAPE: 21.53% ================================================== ARIMA(3, 0, 4) MAPE: 21.34% ================================================== ARIMA(3, 1, 0) MAPE: 12.89% ================================================== ARIMA(3, 1, 1) MAPE: 13.13% ================================================== ARIMA(3, 1, 2) MAPE: 10.13% ================================================== ARIMA(3, 1, 3) MAPE: 13.06% ================================================== ARIMA(3, 1, 4) MAPE: 11.58% ================================================== ARIMA(4, 0, 0) MAPE: 20.8% ================================================== ARIMA(4, 0, 1) MAPE: 21.26% ================================================== ARIMA(4, 0, 2) MAPE: 21.11% ================================================== ARIMA(4, 0, 3) MAPE: 21.44% ================================================== ARIMA(4, 0, 4) MAPE: 21.36% ================================================== ARIMA(4, 1, 0) MAPE: 11.06% ================================================== ARIMA(4, 1, 1) MAPE: 11.38% ================================================== ARIMA(4, 1, 2) MAPE: 13.93% ================================================== ARIMA(4, 1, 3) MAPE: 11.56% ================================================== ARIMA(4, 1, 4) MAPE: 20.6% ==================================================
Best parameter and lowest MAPE for GORONTALO¶
print(f"Best parameters model for GORONTALO:", best_param_gorontalo)
print(f"with the lowest MAPE: {lowest_mape_gorontalo.round(2)}%")
Best parameters model for GORONTALO: (0, 1, 1) with the lowest MAPE: 5.46%
Make prediction vs actual plot for GORONTALO¶
plot_predictions_vs_actual(prediction_series=prediction_gorontalo, actual_series=test_gorontalo)
SULAWESI BARAT (30)¶
Split SULAWESI BARAT dataset¶
train_sulawesi_barat = training_data["SULAWESI BARAT"]
test_sulawesi_barat = test_data["SULAWESI BARAT"]
Make prediction for SULAWESI BARAT¶
best_param_sulawesi_barat, lowest_mape_sulawesi_barat, prediction_sulawesi_barat = make_arima_prediction(train_sulawesi_barat, test_sulawesi_barat)
all_provinces_predictions['SULAWESI BARAT'] = prediction_sulawesi_barat
ARIMA(0, 0, 0) MAPE: 38.18% ================================================== ARIMA(0, 0, 1) MAPE: 30.54% ================================================== ARIMA(0, 0, 2) MAPE: 26.39% ================================================== ARIMA(0, 0, 3) MAPE: 23.03% ================================================== ARIMA(0, 0, 4) MAPE: 21.5% ================================================== ARIMA(0, 1, 0) MAPE: 10.33% ================================================== ARIMA(0, 1, 1) MAPE: 10.34% ================================================== ARIMA(0, 1, 2) MAPE: 25.74% ================================================== ARIMA(0, 1, 3) MAPE: 9.41% ================================================== ARIMA(0, 1, 4) MAPE: 10.43% ================================================== ARIMA(1, 0, 0) MAPE: 11.57% ================================================== ARIMA(1, 0, 1) MAPE: 10.42% ================================================== ARIMA(1, 0, 2) MAPE: 17.32% ================================================== ARIMA(1, 0, 3) MAPE: 14.47% ================================================== ARIMA(1, 0, 4) MAPE: 14.51% ================================================== ARIMA(1, 1, 0) MAPE: 10.35% ================================================== ARIMA(1, 1, 1) MAPE: 10.36% ================================================== ARIMA(1, 1, 2) MAPE: 20.69% ================================================== ARIMA(1, 1, 3) MAPE: 12.3% ================================================== ARIMA(1, 1, 4) MAPE: 10.55% ================================================== ARIMA(2, 0, 0) MAPE: 11.78% ================================================== ARIMA(2, 0, 1) MAPE: 11.53% ================================================== ARIMA(2, 0, 2) MAPE: 14.67% ================================================== ARIMA(2, 0, 3) MAPE: 14.46% ================================================== ARIMA(2, 0, 4) MAPE: 14.57% ================================================== ARIMA(2, 1, 0) MAPE: 18.12% ================================================== ARIMA(2, 1, 1) MAPE: 17.79% ================================================== ARIMA(2, 1, 2) MAPE: 14.22% ================================================== ARIMA(2, 1, 3) MAPE: 10.67% ================================================== ARIMA(2, 1, 4) MAPE: 10.49% ================================================== ARIMA(3, 0, 0) MAPE: 13.11% ================================================== ARIMA(3, 0, 1) MAPE: 14.13% ================================================== ARIMA(3, 0, 2) MAPE: 14.23% ================================================== ARIMA(3, 0, 3) MAPE: 14.46% ================================================== ARIMA(3, 0, 4) MAPE: 14.71% ================================================== ARIMA(3, 1, 0) MAPE: 11.38% ================================================== ARIMA(3, 1, 1) MAPE: 13.57% ================================================== ARIMA(3, 1, 2) MAPE: 14.07% ================================================== ARIMA(3, 1, 3) MAPE: 12.48% ================================================== ARIMA(3, 1, 4) MAPE: 14.24% ================================================== ARIMA(4, 0, 0) MAPE: 16.37% ================================================== ARIMA(4, 0, 1) MAPE: 17.4% ================================================== ARIMA(4, 0, 2) MAPE: 18.28% ================================================== ARIMA(4, 0, 3) MAPE: 15.83% ================================================== ARIMA(4, 0, 4) MAPE: 15.29% ================================================== ARIMA(4, 1, 0) MAPE: 12.3% ================================================== ARIMA(4, 1, 1) MAPE: 11.47% ================================================== ARIMA(4, 1, 2) MAPE: 12.63% ================================================== ARIMA(4, 1, 3) MAPE: 15.29% ================================================== ARIMA(4, 1, 4) MAPE: 17.22% ==================================================
Best parameter and lowest MAPE for SULAWESI BARAT¶
print(f"Best parameters model for SULAWESI BARAT:", best_param_sulawesi_barat)
print(f"with the lowest MAPE: {lowest_mape_sulawesi_barat.round(2)}%")
Best parameters model for SULAWESI BARAT: (0, 1, 3) with the lowest MAPE: 9.41%
Make prediction vs actual plot for SULAWESI BARAT¶
plot_predictions_vs_actual(prediction_series=prediction_sulawesi_barat, actual_series=test_sulawesi_barat)
MALUKU (31)¶
Split MALUKU dataset¶
train_maluku = training_data["MALUKU"]
test_maluku = test_data["MALUKU"]
Make prediction for MALUKU¶
best_param_maluku, lowest_mape_maluku, prediction_maluku = make_arima_prediction(train_maluku, test_maluku)
all_provinces_predictions['MALUKU'] = prediction_maluku
ARIMA(0, 0, 0) MAPE: 47.25% ================================================== ARIMA(0, 0, 1) MAPE: 40.23% ================================================== ARIMA(0, 0, 2) MAPE: 35.8% ================================================== ARIMA(0, 0, 3) MAPE: 33.68% ================================================== ARIMA(0, 0, 4) MAPE: 32.36% ================================================== ARIMA(0, 1, 0) MAPE: 83.78% ================================================== ARIMA(0, 1, 1) MAPE: 29.82% ================================================== ARIMA(0, 1, 2) MAPE: 23.39% ================================================== ARIMA(0, 1, 3) MAPE: 19.67% ================================================== ARIMA(0, 1, 4) MAPE: 19.1% ================================================== ARIMA(1, 0, 0) MAPE: 32.73% ================================================== ARIMA(1, 0, 1) MAPE: 25.67% ================================================== ARIMA(1, 0, 2) MAPE: 25.99% ================================================== ARIMA(1, 0, 3) MAPE: 28.34% ================================================== ARIMA(1, 0, 4) MAPE: 25.86% ================================================== ARIMA(1, 1, 0) MAPE: 51.47% ================================================== ARIMA(1, 1, 1) MAPE: 20.76% ================================================== ARIMA(1, 1, 2) MAPE: 13.61% ================================================== ARIMA(1, 1, 3) MAPE: 20.05% ================================================== ARIMA(1, 1, 4) MAPE: 12.27% ================================================== ARIMA(2, 0, 0) MAPE: 28.28% ================================================== ARIMA(2, 0, 1) MAPE: 25.78% ================================================== ARIMA(2, 0, 2) MAPE: 26.73% ================================================== ARIMA(2, 0, 3) MAPE: 28.29% ================================================== ARIMA(2, 0, 4) MAPE: 30.41% ================================================== ARIMA(2, 1, 0) MAPE: 40.23% ================================================== ARIMA(2, 1, 1) MAPE: 13.51% ================================================== ARIMA(2, 1, 2) MAPE: 13.62% ================================================== ARIMA(2, 1, 3) MAPE: 11.85% ================================================== ARIMA(2, 1, 4) MAPE: 11.66% ================================================== ARIMA(3, 0, 0) MAPE: 26.91% ================================================== ARIMA(3, 0, 1) MAPE: 25.86% ================================================== ARIMA(3, 0, 2) MAPE: 26.06% ================================================== ARIMA(3, 0, 3) MAPE: 26.97% ================================================== ARIMA(3, 0, 4) MAPE: 28.72% ================================================== ARIMA(3, 1, 0) MAPE: 32.23% ================================================== ARIMA(3, 1, 1) MAPE: 14.04% ================================================== ARIMA(3, 1, 2) MAPE: 13.76% ================================================== ARIMA(3, 1, 3) MAPE: 12.06% ================================================== ARIMA(3, 1, 4) MAPE: 16.0% ================================================== ARIMA(4, 0, 0) MAPE: 24.99% ================================================== ARIMA(4, 0, 1) MAPE: 25.82% ================================================== ARIMA(4, 0, 2) MAPE: 29.14% ================================================== ARIMA(4, 0, 3) MAPE: 44.43% ================================================== ARIMA(4, 0, 4) MAPE: 28.26% ================================================== ARIMA(4, 1, 0) MAPE: 30.72% ================================================== ARIMA(4, 1, 1) MAPE: 13.98% ================================================== ARIMA(4, 1, 2) MAPE: 13.02% ================================================== ARIMA(4, 1, 3) MAPE: 11.91% ================================================== ARIMA(4, 1, 4) MAPE: 13.96% ==================================================
Best parameter and lowest MAPE for MALUKU¶
print(f"Best parameters model for MALUKU:", best_param_maluku)
print(f"with the lowest MAPE: {lowest_mape_maluku.round(2)}%")
Best parameters model for MALUKU: (2, 1, 4) with the lowest MAPE: 11.66%
Make prediction vs actual plot for MALUKU¶
plot_predictions_vs_actual(prediction_series=prediction_maluku, actual_series=test_maluku)
MALUKU UTARA (32)¶
Split MALUKU UTARA dataset¶
train_maluku_utara = training_data["MALUKU UTARA"]
test_maluku_utara = test_data["MALUKU UTARA"]
Make prediction for MALUKU UTARA¶
best_param_maluku_utara, lowest_mape_maluku_utara, prediction_maluku_utara = make_arima_prediction(train_maluku_utara, test_maluku_utara)
all_provinces_predictions['MALUKU UTARA'] = prediction_maluku_utara
ARIMA(0, 0, 0) MAPE: 38.11% ================================================== ARIMA(0, 0, 1) MAPE: 34.51% ================================================== ARIMA(0, 0, 2) MAPE: 41.41% ================================================== ARIMA(0, 0, 3) MAPE: 41.11% ================================================== ARIMA(0, 0, 4) MAPE: 30.72% ================================================== ARIMA(0, 1, 0) MAPE: 76.63% ================================================== ARIMA(0, 1, 1) MAPE: 63.86% ================================================== ARIMA(0, 1, 2) MAPE: 67.83% ================================================== ARIMA(0, 1, 3) MAPE: 46.2% ================================================== ARIMA(0, 1, 4) MAPE: 43.22% ================================================== ARIMA(1, 0, 0) MAPE: 25.97% ================================================== ARIMA(1, 0, 1) MAPE: 27.17% ================================================== ARIMA(1, 0, 2) MAPE: 25.32% ================================================== ARIMA(1, 0, 3) MAPE: 38.87% ================================================== ARIMA(1, 0, 4) MAPE: 31.41% ================================================== ARIMA(1, 1, 0) MAPE: 64.52% ================================================== ARIMA(1, 1, 1) MAPE: 67.87% ================================================== ARIMA(1, 1, 2) MAPE: 43.95% ================================================== ARIMA(1, 1, 3) MAPE: 43.93% ================================================== ARIMA(1, 1, 4) MAPE: 43.88% ================================================== ARIMA(2, 0, 0) MAPE: 26.68% ================================================== ARIMA(2, 0, 1) MAPE: 27.15% ================================================== ARIMA(2, 0, 2) MAPE: 25.92% ================================================== ARIMA(2, 0, 3) MAPE: 32.07% ================================================== ARIMA(2, 0, 4) MAPE: 33.11% ================================================== ARIMA(2, 1, 0) MAPE: 68.36% ================================================== ARIMA(2, 1, 1) MAPE: 69.23% ================================================== ARIMA(2, 1, 2) MAPE: 44.41% ================================================== ARIMA(2, 1, 3) MAPE: 42.49% ================================================== ARIMA(2, 1, 4) MAPE: 44.84% ================================================== ARIMA(3, 0, 0) MAPE: 26.8% ================================================== ARIMA(3, 0, 1) MAPE: 26.35% ================================================== ARIMA(3, 0, 2) MAPE: 23.49% ================================================== ARIMA(3, 0, 3) MAPE: 30.99% ================================================== ARIMA(3, 0, 4) MAPE: 29.38% ================================================== ARIMA(3, 1, 0) MAPE: 59.36% ================================================== ARIMA(3, 1, 1) MAPE: 43.41% ================================================== ARIMA(3, 1, 2) MAPE: 46.88% ================================================== ARIMA(3, 1, 3) MAPE: 35.28% ================================================== ARIMA(3, 1, 4) MAPE: 39.32% ================================================== ARIMA(4, 0, 0) MAPE: 28.76% ================================================== ARIMA(4, 0, 1) MAPE: 28.85% ================================================== ARIMA(4, 0, 2) MAPE: 28.03% ================================================== ARIMA(4, 0, 3) MAPE: 30.41% ================================================== ARIMA(4, 0, 4) MAPE: 30.95% ================================================== ARIMA(4, 1, 0) MAPE: 48.68% ================================================== ARIMA(4, 1, 1) MAPE: 42.28% ================================================== ARIMA(4, 1, 2) MAPE: 44.55% ================================================== ARIMA(4, 1, 3) MAPE: 57.9% ================================================== ARIMA(4, 1, 4) MAPE: 36.49% ==================================================
Best parameteter and lowest MAPE for MALUKU UTARA¶
print(f"Best parameters model for MALUKU UTARA:", best_param_maluku_utara)
print(f"with the lowest MAPE: {lowest_mape_maluku_utara.round(2)}%")
Best parameters model for MALUKU UTARA: (3, 0, 2) with the lowest MAPE: 23.49%
Make predcition vs actual plot for MALUKU UTARA¶
plot_predictions_vs_actual(prediction_series=prediction_maluku_utara, actual_series=test_maluku_utara)
PAPUA BARAT (33)¶
Split PAPUA BARAT dataset¶
train_papua_barat = training_data["PAPUA BARAT"]
test_papua_barat = test_data["PAPUA BARAT"]
Make prediction for PAPUA BARAT¶
best_param_papua_barat, lowest_mape_papua_barat, prediction_papua_barat = make_arima_prediction(train_papua_barat, test_papua_barat)
all_provinces_predictions['PAPUA BARAT'] = prediction_papua_barat
ARIMA(0, 0, 0) MAPE: 101.18% ================================================== ARIMA(0, 0, 1) MAPE: 124.57% ================================================== ARIMA(0, 0, 2) MAPE: 164.76% ================================================== ARIMA(0, 0, 3) MAPE: 188.58% ================================================== ARIMA(0, 0, 4) MAPE: 240.44% ================================================== ARIMA(0, 1, 0) MAPE: 541.41% ================================================== ARIMA(0, 1, 1) MAPE: 393.21% ================================================== ARIMA(0, 1, 2) MAPE: 388.8% ================================================== ARIMA(0, 1, 3) MAPE: 368.51% ================================================== ARIMA(0, 1, 4) MAPE: 395.71% ================================================== ARIMA(1, 0, 0) MAPE: 353.07% ================================================== ARIMA(1, 0, 1) MAPE: 318.29% ================================================== ARIMA(1, 0, 2) MAPE: 321.04% ================================================== ARIMA(1, 0, 3) MAPE: 325.79% ================================================== ARIMA(1, 0, 4) MAPE: 305.84% ================================================== ARIMA(1, 1, 0) MAPE: 436.41% ================================================== ARIMA(1, 1, 1) MAPE: 384.56% ================================================== ARIMA(1, 1, 2) MAPE: 418.57% ================================================== ARIMA(1, 1, 3) MAPE: 373.11% ================================================== ARIMA(1, 1, 4) MAPE: 412.69% ================================================== ARIMA(2, 0, 0) MAPE: 335.51% ================================================== ARIMA(2, 0, 1) MAPE: 350.08% ================================================== ARIMA(2, 0, 2) MAPE: 336.85% ================================================== ARIMA(2, 0, 3) MAPE: 325.99% ================================================== ARIMA(2, 0, 4) MAPE: 343.4% ================================================== ARIMA(2, 1, 0) MAPE: 434.06% ================================================== ARIMA(2, 1, 1) MAPE: 383.85% ================================================== ARIMA(2, 1, 2) MAPE: 383.44% ================================================== ARIMA(2, 1, 3) MAPE: 416.53% ================================================== ARIMA(2, 1, 4) MAPE: 411.73% ================================================== ARIMA(3, 0, 0) MAPE: 340.02% ================================================== ARIMA(3, 0, 1) MAPE: 345.86% ================================================== ARIMA(3, 0, 2) MAPE: 327.46% ================================================== ARIMA(3, 0, 3) MAPE: 331.26% ================================================== ARIMA(3, 0, 4) MAPE: 342.75% ================================================== ARIMA(3, 1, 0) MAPE: 370.33% ================================================== ARIMA(3, 1, 1) MAPE: 366.58% ================================================== ARIMA(3, 1, 2) MAPE: 391.98% ================================================== ARIMA(3, 1, 3) MAPE: 421.31% ================================================== ARIMA(3, 1, 4) MAPE: 415.02% ================================================== ARIMA(4, 0, 0) MAPE: 306.16% ================================================== ARIMA(4, 0, 1) MAPE: 308.78% ================================================== ARIMA(4, 0, 2) MAPE: 312.36% ================================================== ARIMA(4, 0, 3) MAPE: 312.3% ================================================== ARIMA(4, 0, 4) MAPE: 336.06% ================================================== ARIMA(4, 1, 0) MAPE: 364.55% ================================================== ARIMA(4, 1, 1) MAPE: 364.15% ================================================== ARIMA(4, 1, 2) MAPE: 422.61% ================================================== ARIMA(4, 1, 3) MAPE: 399.99% ================================================== ARIMA(4, 1, 4) MAPE: 471.61% ==================================================
Best parameter and lowest MAPE for PAPUA BARAT¶
print(f"Best parameters model for PAPUA BARAT:", best_param_papua_barat)
print(f"with the lowest MAPE: {lowest_mape_papua_barat.round(2)}%")
Best parameters model for PAPUA BARAT: (0, 0, 0) with the lowest MAPE: 101.18%
Make prediction vs actual plot for PAPUA BARAT¶
plot_predictions_vs_actual(prediction_series=prediction_papua_barat, actual_series=test_papua_barat)
PAPUA (34)¶
Split PAPUA dataset¶
train_papua = training_data["PAPUA"]
test_papua = test_data["PAPUA"]
Make prediction for PAPUA¶
best_param_papua, lowest_mape_papua, prediction_papua = make_arima_prediction(train_papua, test_papua)
all_provinces_predictions['PAPUA'] = prediction_papua
ARIMA(0, 0, 0) MAPE: 20.81% ================================================== ARIMA(0, 0, 1) MAPE: 39.3% ================================================== ARIMA(0, 0, 2) MAPE: 62.89% ================================================== ARIMA(0, 0, 3) MAPE: 92.0% ================================================== ARIMA(0, 0, 4) MAPE: 120.57% ================================================== ARIMA(0, 1, 0) MAPE: 321.25% ================================================== ARIMA(0, 1, 1) MAPE: 228.83% ================================================== ARIMA(0, 1, 2) MAPE: 225.23% ================================================== ARIMA(0, 1, 3) MAPE: 220.75% ================================================== ARIMA(0, 1, 4) MAPE: 226.17% ================================================== ARIMA(1, 0, 0) MAPE: 212.29% ================================================== ARIMA(1, 0, 1) MAPE: 191.99% ================================================== ARIMA(1, 0, 2) MAPE: 193.5% ================================================== ARIMA(1, 0, 3) MAPE: 193.4% ================================================== ARIMA(1, 0, 4) MAPE: 192.91% ================================================== ARIMA(1, 1, 0) MAPE: 257.18% ================================================== ARIMA(1, 1, 1) MAPE: 224.3% ================================================== ARIMA(1, 1, 2) MAPE: 223.86% ================================================== ARIMA(1, 1, 3) MAPE: 220.57% ================================================== ARIMA(1, 1, 4) MAPE: 224.7% ================================================== ARIMA(2, 0, 0) MAPE: 198.79% ================================================== ARIMA(2, 0, 1) MAPE: 194.67% ================================================== ARIMA(2, 0, 2) MAPE: 193.34% ================================================== ARIMA(2, 0, 3) MAPE: 195.45% ================================================== ARIMA(2, 0, 4) MAPE: 161.26% ================================================== ARIMA(2, 1, 0) MAPE: 240.61% ================================================== ARIMA(2, 1, 1) MAPE: 223.53% ================================================== ARIMA(2, 1, 2) MAPE: 222.39% ================================================== ARIMA(2, 1, 3) MAPE: 219.21% ================================================== ARIMA(2, 1, 4) MAPE: 231.77% ================================================== ARIMA(3, 0, 0) MAPE: 195.52% ================================================== ARIMA(3, 0, 1) MAPE: 196.11% ================================================== ARIMA(3, 0, 2) MAPE: 193.62% ================================================== ARIMA(3, 0, 3) MAPE: 192.95% ================================================== ARIMA(3, 0, 4) MAPE: 161.49% ================================================== ARIMA(3, 1, 0) MAPE: 222.81% ================================================== ARIMA(3, 1, 1) MAPE: 220.27% ================================================== ARIMA(3, 1, 2) MAPE: 220.73% ================================================== ARIMA(3, 1, 3) MAPE: 223.18% ================================================== ARIMA(3, 1, 4) MAPE: 220.54% ================================================== ARIMA(4, 0, 0) MAPE: 194.93% ================================================== ARIMA(4, 0, 1) MAPE: 195.25% ================================================== ARIMA(4, 0, 2) MAPE: 199.09% ================================================== ARIMA(4, 0, 3) MAPE: 210.69% ================================================== ARIMA(4, 0, 4) MAPE: 176.61% ================================================== ARIMA(4, 1, 0) MAPE: 220.51% ================================================== ARIMA(4, 1, 1) MAPE: 220.04% ================================================== ARIMA(4, 1, 2) MAPE: 221.46% ================================================== ARIMA(4, 1, 3) MAPE: 221.07% ================================================== ARIMA(4, 1, 4) MAPE: 225.79% ==================================================
Best parameter and lowest MAPE for PAPUA¶
print(f"Best parameters model for PAPUA:", best_param_papua)
print(f"with the lowest MAPE: {lowest_mape_papua.round(2)}%")
Best parameters model for PAPUA: (0, 0, 0) with the lowest MAPE: 20.81%
Make prediction vs actual plot for PAPUA¶
plot_predictions_vs_actual(prediction_series=prediction_papua, actual_series=test_papua)
All province prediction¶
all_provinces_predictions = all_provinces_predictions.round(2)
all_provinces_predictions.to_csv("all_provinces_predictions.csv")
prediction = pd.read_csv("all_provinces_predictions.csv")
prediction
| Unnamed: 0 | ACEH | SUMATERA UTARA | SUMATERA BARAT | RIAU | JAMBI | SUMATERA SELATAN | BENGKULU | LAMPUNG | KEP. BANGKA BELITUNG | ... | SULAWESI UTARA | SULAWESI TENGAH | SULAWESI SELATAN | SULAWESI TENGGARA | GORONTALO | SULAWESI BARAT | MALUKU | MALUKU UTARA | PAPUA BARAT | PAPUA | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2024-01-01 | 1283481.77 | 3103770.69 | 1350713.52 | 1317269.58 | 574645.37 | 1360871.88 | 475724.25 | 1363950.76 | 324168.23 | ... | 620986.82 | 952640.91 | 3328106.53 | 1078504.24 | 285826.48 | 370191.94 | 197014.16 | 276173.24 | 67710.78 | 118891.81 |
| 1 | 2024-02-01 | 1187838.71 | 3341895.23 | 1350674.60 | 1373412.74 | 575499.96 | 1390412.01 | 419073.61 | 1294200.09 | 305676.05 | ... | 629553.03 | 1014809.28 | 3270812.88 | 1133312.88 | 281811.19 | 409268.92 | 188388.23 | 230578.75 | 70069.01 | 121876.33 |
| 2 | 2024-03-01 | 1156737.96 | 3345807.24 | 1350678.59 | 1364114.64 | 599613.40 | 1392651.23 | 436341.06 | 1254520.32 | 292528.91 | ... | 633827.77 | 814419.19 | 2984943.78 | 1090162.22 | 284698.32 | 335596.42 | 170974.88 | 220090.80 | 69500.69 | 120095.20 |
| 3 | 2024-04-01 | 1181739.51 | 3166725.24 | 1350716.95 | 1310724.36 | 651736.84 | 1334314.97 | 395557.22 | 1522194.56 | 282140.94 | ... | 650085.93 | 838802.63 | 2920305.55 | 1123995.61 | 289739.83 | 334255.20 | 163139.02 | 187807.10 | 69837.15 | 119976.60 |
| 4 | 2024-05-01 | 1155903.91 | 3192265.05 | 1350736.96 | 1298180.02 | 635986.04 | 1332158.21 | 388218.55 | 1473739.16 | 276637.72 | ... | 648917.78 | 767498.14 | 2750166.91 | 1096222.74 | 289497.99 | 334583.42 | 148149.00 | 178588.18 | 67063.88 | 117913.49 |
| 5 | 2024-06-01 | 1091958.55 | 3222921.93 | 1350721.10 | 1286267.83 | 615376.42 | 1342290.54 | 364871.19 | 1358110.84 | 273982.82 | ... | 651874.36 | 746345.69 | 2641086.37 | 1113581.44 | 288217.55 | 328898.81 | 142721.56 | 156221.15 | 63677.19 | 112488.40 |
6 rows × 35 columns
prediction.set_index(test_data.index, inplace=True)
prediction = prediction.drop(columns=['Unnamed: 0'])
prediction
| ACEH | SUMATERA UTARA | SUMATERA BARAT | RIAU | JAMBI | SUMATERA SELATAN | BENGKULU | LAMPUNG | KEP. BANGKA BELITUNG | KEP. RIAU | ... | SULAWESI UTARA | SULAWESI TENGAH | SULAWESI SELATAN | SULAWESI TENGGARA | GORONTALO | SULAWESI BARAT | MALUKU | MALUKU UTARA | PAPUA BARAT | PAPUA | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| time_series | |||||||||||||||||||||
| 2024-01-01 | 1283481.77 | 3103770.69 | 1350713.52 | 1317269.58 | 574645.37 | 1360871.88 | 475724.25 | 1363950.76 | 324168.23 | 288351.37 | ... | 620986.82 | 952640.91 | 3328106.53 | 1078504.24 | 285826.48 | 370191.94 | 197014.16 | 276173.24 | 67710.78 | 118891.81 |
| 2024-02-01 | 1187838.71 | 3341895.23 | 1350674.60 | 1373412.74 | 575499.96 | 1390412.01 | 419073.61 | 1294200.09 | 305676.05 | 295263.25 | ... | 629553.03 | 1014809.28 | 3270812.88 | 1133312.88 | 281811.19 | 409268.92 | 188388.23 | 230578.75 | 70069.01 | 121876.33 |
| 2024-03-01 | 1156737.96 | 3345807.24 | 1350678.59 | 1364114.64 | 599613.40 | 1392651.23 | 436341.06 | 1254520.32 | 292528.91 | 292329.09 | ... | 633827.77 | 814419.19 | 2984943.78 | 1090162.22 | 284698.32 | 335596.42 | 170974.88 | 220090.80 | 69500.69 | 120095.20 |
| 2024-04-01 | 1181739.51 | 3166725.24 | 1350716.95 | 1310724.36 | 651736.84 | 1334314.97 | 395557.22 | 1522194.56 | 282140.94 | 292394.39 | ... | 650085.93 | 838802.63 | 2920305.55 | 1123995.61 | 289739.83 | 334255.20 | 163139.02 | 187807.10 | 69837.15 | 119976.60 |
| 2024-05-01 | 1155903.91 | 3192265.05 | 1350736.96 | 1298180.02 | 635986.04 | 1332158.21 | 388218.55 | 1473739.16 | 276637.72 | 280977.81 | ... | 648917.78 | 767498.14 | 2750166.91 | 1096222.74 | 289497.99 | 334583.42 | 148149.00 | 178588.18 | 67063.88 | 117913.49 |
| 2024-06-01 | 1091958.55 | 3222921.93 | 1350721.10 | 1286267.83 | 615376.42 | 1342290.54 | 364871.19 | 1358110.84 | 273982.82 | 271689.84 | ... | 651874.36 | 746345.69 | 2641086.37 | 1113581.44 | 288217.55 | 328898.81 | 142721.56 | 156221.15 | 63677.19 | 112488.40 |
6 rows × 34 columns
!jupyter nbconvert --to html "./UAS2024_IF540L_Kelas GL_Kelompok_4.ipynb" --output-dir="./"
Next step:¶
- convert the generated html file to PDF using the online tool: https://www.sejda.com/html-to-pdf
- choose the following settings:
- Page size: One long page
- Page Orientation: auto
- Use print stylesheet
- Submit your ipython notebook and PDF files
Markdown basics https://markdown-guide.readthedocs.io/en/latest/basics.html#